no a jaky je teda nejlepsi kodek a kontejner pro online streamovani?
ja v soucasnosti musim pouzivat h264 kodek + flv kontejner. Webm podporuje jenom vp8 a vp9, a to pri enkodovani spotrebovava hodne procesoroveho casu, mp4 se mi nepodarilo rozchodit, pry nepodporuje streamovani protoze posila nejake meatadata ktera jsou umistena na konci souboru a u ogg theory je zase spatna kvalita.
1) Formát, 2) Pro streamy asi opravdu H.264 ve FLV, otázka je, jaký zvuk, protože podpora AAC ve VLC je divná. Takže asi staré MP3…
Pro záznamy používám H.264+Vorbis v Matrosce.
MP4 lze třeba v avconv opravit pomocí -movflags +faststart, pak by to mělo ta metadata dát na začátek.
Abych mohl přehrát videa z kamery na TV, streamovat je nebo přehrávat a rychle seekovat na mobilních zařízeních z NASu tak používám cca toto:
ffmpeg -i in.mov -f mp4 -c:v libx264 -preset medium -crf 23 -tune fastdecode -movflags faststart -pix_fmt yuv420p -minrate 0 -maxrate 6000k -bufsize 1000k -refs 1 -coder 1 -g 60 -mbd 2 -trellis 1 -bf 2 -qmax 44 -map_metadata 1 -c:a aac -ab 160k -ar 44100 -async 1 -strict experimental out.mp4
Popravdě netuším, co některé volby znamenají (prý je využívá třeba YouTube), ale funguje to zatím dle očekávání. :-)
Tady mám starší, ale celý skript: https://github.com/fialakarel/video2mp4/blob/master/video2mp4.sh
Pokud se nepletu Totem akceleraci podporuje. Vyuziva gstreamer a ten ma ruzne dekodovaci backendy (viz v terminalu gst-inspect) - jednim z nich je napr. gstreamer-vaapi.
Je HW akcelerace (dekodovani) a je HW akcelerace (vykreslovani). Vas navod na Firefox se zabyva tim druhym. Na to prve vyziva Firefox na linuxu gstreamer (a ten zasa muze VAAPI), nicmene Firefox na rozdil od totemu pouziva vaapi jen na dekodovani, nikoliv na nasledny rendering; ten muze/nemusi byt HW akcelerovan, zavisi od ovladacu, podpory browseru atd. No i pres vsechnu snahu zapnout vsechny akcelerace je u mne vytizeni CPU porad velke, resp. stoupa s velikosti videa na obrazovce - napr. kdyz sleduju 1080p video v okne a nasledne ho dam na fullscreen (mam Intel HD 4000). Proto je lepsi prehravat video v prehravacich (ktere to umi) a ne v browseru, kde kazdy to dela/nedela jinak.
Napr. na windowsu je v prohlizeci pro mne nejlepsi flash player; proc? Protoze umi HW dekodovani a take HW rendering (vytizenost CPU jednotky procent na 1080p). Kdyz to preklopim do HTML5 (samozrejme h264) tak je to des (i presto ze Firefox udajne pouziva DXVA na HW dekodovani a Direct2D na HW vykreslovani).
Na linuxu ve Firefoxu taky pouzivam flash player, presneji chromium-pepperflash a k tomu freshplayer plugin, ktery pokud je skompilovany s podporou HW akcelerace umi prinutit flash player ji pouzit. Vytizeni CPU (resp. zahrivani) ale neni moc rozdilne od HTML5 (na linuxu). Mozna je to tim, ze freshplayer navic na nektere veci pouziva OpenGL, nechcelo se mi zkoumat dal.
Jinak je cela situace kolem prehravani videa v prohlizecich uplne katastrofalni. Mrha se vykonem (a tudiz baterii jak jen jde), to co VLC prehraje na stejnem HW pod 5% CPU zvladaji prohlizece vyhnat na 90%. Flash player je sice takovy jaky je, nejsem jeho zastance, ale dokud se nevyresi vsechna tato akceleracni pekla (na win, na linuxe, Firefox, Chrome, you name it) tak smutnou pravdou zustava ze je porad na prehravani videa nejefektivnejsi (pokud tedy vase GPU pod nim umi HW dekodovani, jinak ne :).
youtube-dl ve skutečnosti umí stáhnout i nejlepší formáty (audio+video zvlášť), dokonce je pak i sám zkombinuje pomocí ffmpegu, stačí zadat parametr
youtube-dl -f bestvideo+bestaudio
Umí toho opravdu hodně, např. já stahuju pomocí skriptu nejlepší dostupné video, ale ne víc než Full HD, a to takto:
youtube-dl -f 'bestvideo[height <=? 1080][width <=? 1920]+bestaudio'
Super vlastnost je, že umí tahat i playlisty. Nabízí tak fajn ochranu proti celkem běžné situaci kdy z youtube zmizí moje oblíbené video: Playlist s oblíbenými a na ten pravidelně pouštěný youtube-dl přes cron. (samozřejmě před stahováním kontroluje jestli už není staženo, takže netahá jedno video dvakrát)
IMO nejlepší je mpv + doplněk "watch with mpv" pro Firefox. Používá youtube-dl (a rovnou strká data přehrávači, žádné čekání), takže funguje téměř všude včetně nějaký livestreamů. Aktivace buď u odkazu v kontextovém menu nebo na horní liště pro aktuální url... a s ytdl-format=bestvideo+bestaudio v ~/.mpv/config to i umí DASH video/audio na youtube (t.j. 1080p)... i když já sám tam mám 248+251/248+250/137+140/best protože 1080p60fps mi PC uplně nezvládá.
Pro Chromium je zde bohuzel ta neprijemnost, ze HW dekodovani videa pres VAAPI v oficialnich Chromium Linux buildech nefunguje, i kdyz vam chrome://gpu vesele hlasi: "Video Decode: Hardware accelerated". Toto vychazi z rozhodnuti vyvojaru. Podpora je oficialne pouze pro ChromeOS. Pokud by vsak o to nekdo opravdu stal na Linuxu, existuji patche pripadne neoficialni build pro Ubuntu, kde to funguje (vyzkouseno).
Jak dosáhnete na Linuxu "Video Decode: Hardware accelerated"?
Mě to v about:gpu všude na různých strojích hlásí níže:
Accelerated video decode is unavailable on Linux: 137247
Disabled Features: accelerated_video_decode
A samozřejmě pak je výše "Video Decode: Software only, hardware acceleration unavailable"