Mencoder MPEG-2 frameskip

Szervusztok!

Az utóbbi időben történt az, hogy több xvid tömörítést kellett csinálnom PAL DVD formátumú (720x576, 8000kbps, interlaced) MPEG-2 anyagból, miközben szembetaláltam magam egy problémával: az előbb leírt formátumspecifikációjú videóanyagoknál a mencoder egyszerűen kihagyja az első 6-7 képkockát, ezzel elcsúszik a hangsáv is a videóhoz képest (A/V desync), aztán lehet később milliszekundumokkal szenvedni.

Próbáltam már -ofps 50; -lavdopts skiploopfilter=none; -lavdopts skipframe=0 opciókat; -noframedrop csak mplayer-nél megy, mencodernél nem), az eredmény ugyanaz.

Egyébként tfields (alapbeállítás=4) szűrőt használok az 50fps megőrzésére (ezáltal váltottsoros MPEG-2-ből lesz progresszív XviD 50fps-en). Tfields nélkül (pl. pp=lb) nem csinálja a skippelést, csak nem szeretem a deinterlace szűrőket, mert elgányolják a képet (eredetihez képest legalábbis).

Jelenleg következő opciókat használom:

mencoder -srate 44100 -oac mp3lame -lameopts cbr:br=160:mode=1 -ovc xvid -xvidencopts bitrate=840 -vop scale=384:288,tfields -fps 50 -o output-xvid.avi input-mpeg2.mpg

Köszi előre is a választ!
mba

Hozzászólások

en ezt szoktam megadni, hogy ne skippeljen frame-et, hatha segit:
-skiplimit 0 -noskip

- Use the Source Luke ! -

Kipróbáltam, sajnos nem segít rajta :(

Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.026s.
Writing header...
ODML: vprp aspect is 4:3.
Setting audio delay to 0.026s.
Pos: 0.8s 22f ( 0%) 5.99fps Trem: 25min 47mb A-V:0.042 [0:191]
Skipping frame!
Pos: 1.1s 32f ( 0%) 7.04fps Trem: 26min 51mb A-V:0.042 [793:191]
Skipping frame!
Pos: 1.5s 43f ( 0%) 7.52fps Trem: 26min 55mb A-V:0.041 [798:191]
Skipping frame!
Pos: 2.1s 58f ( 0%) 7.91fps Trem: 28min 57mb A-V:0.041 [751:192]
Skipping frame!
Pos: 3.1s 85f ( 0%) 8.32fps Trem: 28min 59mb A-V:0.041 [706:191]
Skipping frame!
Pos: 5.5s 146f ( 0%) 8.49fps Trem: 28min 67mb A-V:0.024 [786:192]

Kipróbáltam 3-pass kódolással (hang külön, videó 2-pass-ben külön), kiderült, hogy csak a hangnál skippel, ha a videót hang nélkül csinálom, nincs skip. Érdekes.

Fejlemények:

Előző hozzászólásban már írtam, hogy csak a hangnál hagy ki frame-eket a mencoder. Ezt most meg is tudom erősíteni és úgy tűnik számomra, hogy mindig csak az első néhány "audio frame" dekódolásával/olvasásával vannak problémák, még akkor is ha -oac copy -val egyszerűen átmásolom az audio sávot. Tehát a mencoder az MP2 formátumú audiosávot nem kedveli valamiért.

Arra is rájöttem, hogy az eldobott kockák száma arányos az fps-sel, ugye eredetileg a videó 25fps váltottsoros, csak én csináltam belőle progresszív 50fps-t a tfields szűrővel. Ha hagyom 25fps-en és a váltottsorosság felbontására (deinterlace) csak egy sima pp=lb -t (tehát fps nem változik) használok, akkor is eldobja a frame-eket, de fele annyit, mint 50fps-nél, tehát meg tudom erősíteni, hogy az első 2-3 audio frame olvasásával vannak gondok.

Hozzá kell tennem, hogy mindenféle MPEG-2 stream-mel ezt csinálja, amelynek audio sávja MP2, hiába DVD compliant, akkor is.

A topik létrehozása óta kipróbáltam több mencoder verziót is: 1.0rc1 (ez a legfrissebb, ez volt az alap), 1.0pre8, 1.0pre7 és cvs-20050928. Mindnél ugyanúgy jelen volt a skippelés.

Sikerült megoldanom a problémát, a dolog kulcsa a motion compensation kikapcsolása a -mc 0 kapcsolóval, így nem fog frame-ket kihagyni. Valószínűleg valamit rosszul értelmez az én MPEG-eimnél, hiszen ha -mc 0 -val csinálom, nem hagyja ki a képkocákat, viszont stimmel a hang. Szóval ha valaki ilyen problémával találkozik, ez a megoldás.