Portál AbcLinuxu, 1. června 2024 16:38

FFmpeg patch pro chybu: error, non monotone timestamps

3.3.2008 16:00 | Přečteno: 1330× | Linux | Výběrový blog | poslední úprava: 3.3.2008 16:10

V nejnovějších verzí FFmpegu se objevil jeden docela otravný problém (od cca 12. 2007), některé mpeg soubory nahrané z TV karet pod Linuxem pomocí getstreamu mají chybné časové stopy (timestamps), FFmpeg to dříve ignoroval, ale stavající verze už to bere celkem vážně a ukončí převod, pokud na takovou chybu narazí.

Nejprve jsem jednoduše odstranil kontrolu na tuto chybu v souboru ffmpeg.c, potom jsem si ale všiml že se ffmpeg za některých situací nechce ukončit, takže to je špatné řešení, hledal jsem tedy lepší řešení, opravit korektně se mi to asi nepodaří, protože ideální řešení je celkově přepsat časovou stopu při převodu, to se dělá jen pokud dochází k enkódování, pokud k enkódování nedochází (-acodec copy -vcodec copy), tak se na časovou stopu moc nešahá, nejjednodušší a funkčí bylo tedy zakázat kontrolu na chybnou časovou stopu přímo v knihovně libavformat, toto řešení jsem dnes asi 4 hodiny důkladně testoval a nepřišel jsem na žádné zásadní problémy.

Pokud máte Debian a používate zdroj http://debian-multimedia.org/ oprava bude v balíku za cca 2 dny. Ostatní, které tato chyba trápí můžou použít přiložený patch.

--- ffmpegcvs-20071206/libavformat/utils.c<---->2007-12-06 16:25:07.000000000 +0100
+++ ffmpegcvs-20071206.orig/libavformat/utils.c>2008-03-03 15:20:29.000000000 +0100
@@ -2277,7 +2277,7 @@
.
     if(st->cur_dts && st->cur_dts != AV_NOPTS_VALUE && st->cur_dts >= pkt->dts){
         av_log(NULL, AV_LOG_ERROR, "error, non monotone timestamps %"PRId64" >= %"PRId64"\n", st->cur_dts, pkt->dts);
-        return -1;
+//        return -1;
     }
     if(pkt->dts != AV_NOPTS_VALUE && pkt->pts != AV_NOPTS_VALUE && pkt->pts < pkt->dts){
         av_log(NULL, AV_LOG_ERROR, "error, pts < dts\n");

Pokud víte o lepším řešení, sem s ním :) Ale musí to být součástí ffmpegu, nechci mpeg soubor opravovat replexem, protože při velkém množství souborů to zabere hodně času a vytíží to zbytečně disk.

PS: Dají se sem vkládat i malé soubory tak jako obrázky? Nikde jsem to tu nenašel.

       

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 (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

4.3.2008 15:57 LesTR | skóre: 17 | Plzeň
Rozbalit Rozbalit vše Re: FFmpeg patch pro chybu: error, non monotone timestamps
Odpovědět | Sbalit | Link | Blokovat | Admin
Děkujeme!
Dobrá práce. O tom, že jsi patch poslal vývojářům příslušné knihovny nepochybuji, ať se to dostane i jinam, než jen do debianu : )
Save The World - http://www.worldcommunitygrid.org/ LesTR

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