Portál AbcLinuxu, 24. dubna 2024 18:51

Převod videa

1.3.2009 00:29 | video

Strávil jsem dnes strašlivě moc času snahou převést video z flv souboru (z archivu Novy), ve kterém je použit kodek h264 pro video a aac pro zvuk. Cílový formát libovolný (tedy chci to dostat do něčeho, aby to šlo bez problémů přehrát na stroji s minimální softwarovou a kodekovou výbavou). Nedaří se a nedaří... Mplayer to přehraje bez problémů, ffplay taktéž. Ale mencoder i ffmpeg zrychlí obraz. Parametr vsync ffmpegu je bez efektu, async to sladí, ale zdeformuje zvuk. Nemáte někdo nějaký tip, jak to zkonverotvat? Zas moc tomu nerozumím, ale když to jde přehrát bez problémů, tak by to teoreticky mělo jít převés do nějakého raw formátu, ne? A z toho už na cokoli jiného... Nebo je někde v mojí úvaza chyba?

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (5) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Dalibor Smolík avatar 1.3.2009 01:39 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: Převod videa
Odpovědět | Sbalit | Link | Blokovat | Admin

Měl by to zvládnout tenhle skript:

#! /bin/sh
INPUT="pokus.flv"
OUTPUT="pokus.avi"
mencoder $INPUT -ofps 15 -vf scale=300:-2 -oac lavc -ovc lavc -lavcopts vcodec=msmpeg4v2:acodec=mp3:abitrate=64 -o $OUTPUT

Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
David Ježek avatar 1.3.2009 04:07 David Ježek | skóre: 83 | blog: Mostly_IMDB
Rozbalit Rozbalit vše Re: Převod videa
ve kterém je použit kodek h264 pro video a aac pro zvuk
z toho důvodu: jakýkoli reencoding je v principu hloupost. změnu kontejneru chápu (byť k ní nevidím důvod),ale řešit to převodem z h264 do mpeg4 a z aac do mp3 ... nevím, nevím. obojí je do výrazně horšího formátu a navíc je to prostě reencoding.
1.3.2009 11:37 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Prvotní motivací byla právě změna kontejneru. Je mi jasný, že lepší by bylo na cílový počítač nainstalovat ty kodeky, ale chtěl jsem to zkusit takle. Důvodem zápisku bylo spíš rozčílení nad tím, že mi to jde bez problémů přehrát, ale překódovat (víceméně stejný softwarem) to nejde. Nechápu, proč se mi nedaří realizovat jednoduchou myšlenku: vem to, co normálně posíláš do okna při přehrávání a pošli to na vstup kodéru.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
David Ježek avatar 1.3.2009 12:14 David Ježek | skóre: 83 | blog: Mostly_IMDB
Rozbalit Rozbalit vše Re: Převod videa
co zkusit třeba avisynth?
1.3.2009 13:12 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

To určitě vyzkouším, ale jak na to koukám, tak to bude vyžadovat trochu víc času a energie. Netušíš proč se to chová tak, jak popisuju? Kde je v mojí úvaze chyba?

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
1.3.2009 13:11 phero | skóre: 17 | blog: techblog
Rozbalit Rozbalit vše Re: Převod videa
"mplayer -dumpstream" a pak na to pustit mencoder
1.3.2009 13:19 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

To jsem zkoušel, vyrobí to soubor s úplně stejným obsahem - tj. jako cp.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Amarok avatar 1.3.2009 16:05 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Převod videa
Tak to neco delate spatne v zapisu parametru, protoze dumpstream je nejprimejsi reseni. Vytahne zvlast video a zvlast audio (do 2 souboru), pak si to zmuxujete uplne podle sebe do cehokoliv (mkv, ogm...). Tim je to podle me vyreseno.
GNUniverse - May the source be with you...
Grunt avatar 1.3.2009 17:00 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Převod videa

Proč by dělal něco špatně? Je snad jasné, že z -dumpstream už podle názvu vypadne ten stream. Pro audio/video je potřeba přepínač -dumpvideo a -dumpaudio.

Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
Amarok avatar 1.3.2009 18:23 Amarok | skóre: 33 | blog: blogoblog
Rozbalit Rozbalit vše Re: Převod videa
Jo jasne, tak vlastne -dumpaudio a -dumpvideo, pak zmuxovat do kontejneru a problem je snad vyresen.
GNUniverse - May the source be with you...
Grunt avatar 1.3.2009 18:54 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Převod videa

No zas tak snadno ne. Ten kontejner tam není jen tak pro srandu králíkům. Mimo jiné jsou v něm uvedeny parametry audia/videa. Pokud si vezmu jako příklad YUV420 RAW video, tak v hlavičce kontejneru je uvedeno rozlišení,framerate a formát barevného rozsahu a pokud jen dumpneš video, tak ho nepřehraješ bez toho aniž by si znova uvedl všechny parametry, protože dumpneš čistě jen data toho videa. U raw videa je to brnkačka(viz. parametr -rawvideo) ovšem u jiných formátu to už tak snadné není (,ale jde to). A úplně to stejně to platí i v tomto případě:

$ mplayer -dumpvideo 2008-12-11_Comeback_15.mp4_CF890A87.flv
MPlayer SVN-r28767-4.3.2 (C) 2000-2009 MPlayer Team

Přehrávám 2008-12-11_Comeback_15.mp4_CF890A87.flv
Detekován formát souboru libavformat.
Nalezen video proud [lavf], -vid 0
Nalezen audio proud [lavf], -aid 1
VIDEO:  [H264]  720x400  0bpp  200.000 fps    0.0 kbps ( 0.0 kbyte/s)
Jádro odhozeno ;)

Končím... (Konec souboru)

$ file stream.dump
stream.dump: data

$ mplayer stream.dump 
MPlayer SVN-r28767-4.3.2 (C) 2000-2009 MPlayer Team             

Přehrávám stream.dump
Detekován formát souboru libavformat.
[mp3 @ 0x9271cd0]Could not find codec parameters (Audio: mp2, 0 channels, s16)
LAVF_header: av_find_stream_info() failed                                     
Detekován formát souboru RAWDV.                                               
VIDEO:  [DVSD]  720x480  24bpp  29.970 fps    0.0 kbps ( 0.0 kbyte/s)         
==========================================================================
Otevírám video dekodér: [dshow] DirectShow video codecs
Decoder supports the following YUV formats: YUY2 UYVY
Decoder is capable of YUV output (flags 0x9)
VDek: Požadovaná konfigurace vo - 720 x 480 (preferovaný barevný prostor: Packed YUY2) [PP] Používám integrovaný postprocessing kodeku, max q = 4. VDek: používám Packed YUY2 jako výstupní csp (ne 0) Poměr stran obrazu filmu není definován - neměním velikost. VO: [xv] 720x480 => 720x480 Packed YUY2 Vybrán video kodek: [qdv] vfm: dshow (Sony Digital Video (DV)) ========================================================================== ========================================================================== Otevírám audio dekodér: [libdv] Raw DV Audio Decoder Neznámý/chybějící audio formát -> nebude zvuk. Audio dekodér - inicializace selhala :( Otevírám audio dekodér: [ffmpeg] FFmpeg/libavcodec audio decoders Nemohu najít kodek 'dvaudio' v libavcodec... Audio dekodér - inicializace selhala :( Audio dekodér - inicializace selhala :( Nemohu nalézt kodek pro audio formát 0x56444152! Přečtěte si DOCS/HTML/en/codecs.html! Audio: žádný zvuk Začínám přehrávat... New_Face selhalo. Možná je chybná cesta k fontu. Dodejte prosím soubor fontu pro texty (~/.mplayer/subfont.ttf). font titulků: load_sub_face selhalo. New_Face selhalo. Možná je chybná cesta k fontu. Dodejte prosím soubor fontu pro texty (~/.mplayer/subfont.ttf). font titulků: load_sub_face selhalo. V: 0.9 29/ 29 19% 1% 0.0% 0 0 Končím... (Konec) $ mplayer -dumpaudio 2008-12-11_Comeback_15.mp4_CF890A87.flv MPlayer SVN-r28767-4.3.2 (C) 2000-2009 MPlayer Team Přehrávám 2008-12-11_Comeback_15.mp4_CF890A87.flv Detekován formát souboru libavformat. Nalezen video proud [lavf], -vid 0 Nalezen audio proud [lavf], -aid 1 VIDEO: [H264] 720x400 0bpp 200.000 fps 0.0 kbps ( 0.0 kbyte/s) Jádro odhozeno ;) Končím... (Konec souboru) $ file stream.dump stream.dump: data $ mplayer stream.dump MPlayer SVN-r28767-4.3.2 (C) 2000-2009 MPlayer Team Přehrávám stream.dump Detekován formát souboru libavformat. LAVF_header: av_open_input_stream() failed Končím... (Konec souboru)

V tomto případě je použití ffmpegu mnohem vhodnější, protože ten překopíruje i parametry. Jediný formát který vím, že jde spolehlivě dumpovat je MP3, protože ten má parametry krom hlavičky uvedené také v hlavičce každého rámce.

Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
1.3.2009 11:31 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Dík za radu, ale problém zůstává - video se šíleně zrychlí.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
1.3.2009 07:50 filo | skóre: 22 | blog: FiloBlog | Ostrava
Rozbalit Rozbalit vše Re: Převod videa
Odpovědět | Sbalit | Link | Blokovat | Admin
A tohle by použít nešlo ?
1.3.2009 11:39 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

To vypadá hezky, ale to video má skoro hodinu a ten soubor 423 MB, což je moc :-( Ale dík za užitečnej okdaz.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
1.3.2009 11:01 Zbynek
Rozbalit Rozbalit vše Re: Převod videa
Odpovědět | Sbalit | Link | Blokovat | Admin
Co Avidemux?
1.3.2009 11:32 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Ten to ani neotevře. Alespoň ta verze, co je v Debianu.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
1.3.2009 11:50 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Teda ne přímo v Debianu, ale tady http://www.debian-multimedia.org/ , což je repositář odkazovaný ze stránek Avidemuxu.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Grunt avatar 1.3.2009 14:13 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Převod videa
Odpovědět | Sbalit | Link | Blokovat | Admin

A můžu se zeptat co je to za video? Popř. můžu požádat o link? Nevím jestli jsou ty videa v H.264 a AAC+, ale co určitě Nova nenabízí je klasický FLV kontejner. Zkopírování H264/AAC+ z FLV kontejneru do čehokoliv je totiž bezproblémové.

Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
1.3.2009 14:23 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Stáhnul jsem to podle návodu, co je tady forum.zive.cz/viewtopic.php Link tedy poskytnout nemohu, leda bych to někam nahrál. Nějaký podraz v tom bude, protože ffmpeg tvrdí, že:

Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 66.67 (200/3)

Přehrávače se s tím ale vyrovnají a vše je OK.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
1.3.2009 14:26 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Abyste to nemuseli číst - funguje to tak, že nějaký program (Replay Media Catcher) zachytává stream, který potom uloží do souboru.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Grunt avatar 1.3.2009 16:52 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Převod videa

Ok, tak jsem to zkusil a přehraju obě verze. Potvrzuju, že ty bazmeky jsou v kontejneru FLV. FLV je proprietární formát a předpokládám, že jeho implementace v libavformat je na základě reverse engineeringu a je časem pořád doplňována. Mplayer ani ffmpeg co mám v distribuci to nepřehrají/nerozluští, ale mplayer a ffmpeg z cvs s tím nemá nejmenší problémy (teda až na dvě ztracené značky na začátku(pts value < previousV: -0.133 ct: -0.002   0/  0 ??% ??% ??,?% 1 0), ale moje domněnka je že v tom má prsty něco jiného - viz dále). Provedl jsem binární srovnání dumpu z Wiresharku a tohoto flv. Některé binární části v tom dumpu z RMC jsou dokonce doplněny. Těžko říct jestli jsou to data z RTSP a nebo to kryplí nova záměrně, ale je pravda, že ty streamy i dumplé z RMC mají problémy. Jinak bych to nechal tak jak to je, protože v dnešní době je H.264 a AAC+ považováno za standard a vzhledem k tomu, že mi to přehraje i VDPAU bych to typl na nějaký standardní H.264 bitstream. Možná bych jen vyměnil FLV kontejner za něco běžnějšího(Matroska,MPEG4,MOV).

Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
Grunt avatar 1.3.2009 17:21 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Převod videa
RTSP

RTMP jsem samozřejmě chtěl říct.

Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
1.3.2009 21:09 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Dík za analýzu:-) Mplayer a ffmpeg jsem si kvůli tomu taky stáhnul z svn, ty co jsem měl si vylámaly zuby. I když později jsem zjistil, že aktuální ffmpeg z Debian testingu to umí taky. Ten návrh se změnou kontejneru mě nakop správným směrem. Když jsem v ffmpeg dal -vcodec copy, tak sice neustále řvalo cosi o nemonotóních timestampech, ale vytvořilo to video se správnou délkou. Zvuk byl, ale opět mimo, tak jsem ho z původního souboru vytáh taky zvlášť a pak to stačilo spojit dohormady. Sice to pořád zní místama trochu divně, ale myslím, že to bohatě stačí. Každopádně to pořád neodpovídá na otázku proč to přehrát jde bez problémů, ale konvertovat ne. To ty programy pracujou s videem pokaždý jinak? Btw. dá se to pomocí toho Wiresharku dumpnout celý? Moc zkušeností s ním nemám a přístě bych nemusel pouštět windowsy:-)

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Grunt avatar 1.3.2009 22:24 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Převod videa
Mplayer a ffmpeg jsem si kvůli tomu taky stáhnul z svn, ty co jsem měl si vylámaly zuby. I když později jsem zjistil, že aktuální ffmpeg z Debian testingu to umí taky.

Myslel jsem aktuální svn branch a ne nějaký binární balíček bůh ví odkud.

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

Ten návrh se změnou kontejneru mě nakop správným směrem. Když jsem v ffmpeg dal -vcodec copy, tak sice neustále řvalo cosi o nemonotóních timestampech, ale vytvořilo to video se správnou délkou.

No to mi právě řve mplayer či ffmpeg z distribuce. Jinak jak u Mplayeru, tak u FFMpegu(ale u toho si to jen myslím) dovoluje buď pts ignorovat a nebo je znova rebuildovat. Ovšem to už může rozhodit A/V synchronizaci.

Každopádně to pořád neodpovídá na otázku proč to přehrát jde bez problémů, ale konvertovat ne. To ty programy pracujou s videem pokaždý jinak?

Cokoliv jde přehrát, jde i stejně zkonvertovat. A to z toho důvodu, že jak FFMpeg, tak Mplayer používají pro formáty jednu a tu samou knihovnu. Teda samozřejmě vyjma formátových problémů.

Btw. dá se to pomocí toho Wiresharku dumpnout celý?

Dá, ale jak jsem říkal, plete se to tam ještě bůh ví s jakým smetím, takže to určitě není přehratelné. Co se týče velikosti do 75%, u demo verze RMC…video to stáhne celé a pak zkracuje, takže se to dá těsně před kompletním stažením prostě ukrást. Jinak se tam kdosi bavil i crackované verzi.

Moc zkušeností s ním nemám a přístě bych nemusel pouštět windowsy:-)

No na Wikipedii se píše, že zatím z OpenSource projektů umí RTMP obhospodařovat XBMC(patch zde. Zrovna stahuju a kompiluju.). Vzhledem k tomu, že se reverse engineeringem tohoto protokolu zabývají v projektu Gnash a vzhledem k tomu, že Adobe vydalo nedávno specifikaci tohoto protokolu, tak si myslím, že je to jen otázka času. Dokonce už vznikají i jakési knihovní funkce. Při nejhorším by se dali využít volání té knihovny pro dumpování, co RMC využívá jako plug-in. V noci prozkouším a zítra poreferuju.

Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
1.3.2009 22:40 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

 

Myslel jsem aktuální svn branch a ne nějaký binární balíček bůh ví odkud.

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg

Přesně to mám, jen možná o den starší - pokud jsi to stahoval dnes.

 

 

Cokoliv jde přehrát, jde i stejně zkonvertovat. A to z toho důvodu, že jak FFMpeg, tak Mplayer používají pro formáty jednu a tu samou knihovnu. Teda samozřejmě vyjma formátových problémů.

To jsem si myslel taky. Ale mám výše zmíněný verze ffmpegu a mplayeru, který to video přehrajou bez chyby a při pokusu o konverzi se zrychlí video (u ffmpeg asi o 9 minut na hodinu, u mplayeru/mencoderu úplně šíleně). Mencoder to udělá dokonce i když dám -ovc copy -oac copy. To byl jeden z důvodů proč jsem psal ten blog, nějak mi to nejde do hlavy.

 

Na to dumpování jsem zvědavej.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...
Grunt avatar 1.3.2009 23:25 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
Rozbalit Rozbalit vše Re: Převod videa

Přesně to mám, jen možná o den starší - pokud jsi to stahoval dnes.

No jo, den sem, den tam. Včera bych ještě nepřehrál WMV3/VC-1 skrze VDPAU, dnes zase nepřehraju MPEG1/2 skrze VDPAU. Tam je to jako na tržišti a aktuální SVN verze je o jedno číslo větší než ta právě stahovaná.

To jsem si myslel taky. Ale mám výše zmíněný verze ffmpegu a mplayeru, který to video přehrajou bez chyby a při pokusu o konverzi se zrychlí video (u ffmpeg asi o 9 minut na hodinu, u mplayeru/mencoderu úplně šíleně). Mencoder to udělá dokonce i když dám -ovc copy -oac copy. To byl jeden z důvodů proč jsem psal ten blog, nějak mi to nejde do hlavy.

No jestli to nebude právě tou verzí toho programu a tím, že 75% odstřihne. Když video přehrávám, tak mám na posuvníku originální délku, ale jak se dostane k 75%, tak to odstřihne. Docela by tomu nasvědčoval i výpis při pokusu dumpnout to:

$ mplayer -dumpvideo 2008-12-11_Comeback_15.mp4_CF890A87.flv
MPlayer SVN-r28767-4.3.2 (C) 2000-2009 MPlayer Team

Přehrávám 2008-12-11_Comeback_15.mp4_CF890A87.flv
Detekován formát souboru libavformat.
Nalezen video proud [lavf], -vid 0
Nalezen audio proud [lavf], -aid 1
VIDEO:  [H264]  720x400  0bpp  200.000 fps    0.0 kbps ( 0.0 kbyte/s)
Jádro odhozeno ;)

Končím... (Konec souboru)

Pokud se nedaří nějak přivést ffmpeg k rozumu a video se překódovává, tak doporučuji nejprve převést do RAWu(jde jak video, tak zvuk) a pak doplnit paramtery ručně. A nebo právě timestampy zničit. A nebo různě dumpnout jak video, tak audio a pak to do toho cpát a ručně doplnit paramtery. Jinak se u obou dá nastavit jestli se to má řídit timestampy a nebo třeba zvukem(nevím jestli také nějaké značky obsahuje a nebo se to řídí přímo jím).

Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
1.3.2009 23:31 qiRzT | skóre: 14 | blog: U_Marvina
Rozbalit Rozbalit vše Re: Převod videa

Tím zkracováním to nebude - mám tu cracklou verzi, takže celé video. Jak jsem psal - už jsem to k rozumu přived, víceméně stejnou metodou, ale přes ten RAW  to ještě zkusím.

Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.