mencoder -idx probléma

 ( horvatha | 2011. március 3., csütörtök - 0:02 )

Kedves HUP-osok!

A következő a problémám:

Adott egy tucatnyi videó mp2-be kódolva, mind azonos mérettel, bitrátával, beállításokkal.
Ezek elé egy copyright szöveget és egy címoldalt raknék 10 illetve 4 s-ig. Ezeket megszerkesztettem, azonos beállításokkal mp2 fájlokba tettem le.

Itt jön a baj:
0) Az mpg elvben cat-tal összefűzhető. De ha ezt teszem, akkor mplayer és vlc lejátssza, de Windowson a MediaPlayer nem, csak az első 10 s-ig jut. A Linux alatti mplayer és vlc lejátssza ugyan, de a kijelzett idő információ rossz.
(Természetesen a cím és copyright szövegek alatt van egy üres hangsáv is, azonos paraméterekkel, mint a fő videón.)

1) OK, utána olvastam, erre van a

mencoder -idx -oac copy -ovc copy a.mpg b.mpg c.mpg -o kesz.mpg

Ez elvileg helyrehozza az időjelölést. Na itt van amit nem értek: a mencoder erre ezt mondja:
(A 10 és 4 s-os előlapok után)

.................

videocodec: framecopy (1024x576 24bpp fourcc=10000001)

videocodec: framecopy (1024x1024 24bpp fourcc=10000002)

All video files must have identical fps, resolution, and codec for -ovc copy.

Exiting...

..................

A c.mpg-ről tehát azt hiszi, hogy 1024x1024-es, pedig 1024x576-os, ugyanúgy, mint a többi. Mi a fene a baja?

(Ubuntu 10.10 frissítésekkel.)

Előre is kösz!

PS: Nem, nem akarok video editor progit használni, mert iparszerűen kellene sok fájllal eljátszani ezt.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

nem lehet hogy tenyleg 1024x1024 es tartalmaz aspect ratio beallitast?

---
Apple iMac 20"
áéíóöőúüű

Nem. Mindet ugyanazzal az ffmpeg beállításokkal generáltam, VLC, mencoder problémamentesen lejátssza a rész-videókat és persze mindegyik 1024x576-os.

Ezzel kódolom a videót:
.........
ffmpeg -i $1 -f dvd -vcodec mpeg2video -r 25.00 -s 1024x576 -aspect 16:9 -b 1200k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 128kb -ar 48000 -ac 1 -pass 1 -y /dev/null >/dev/null 2>/dev/null

ffmpeg -i $1 -f dvd -vcodec mpeg2video -r 25.00 -s 1024x576 -aspect 16:9 -b 1200k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -acodec mp2 -ab 128kb -ar 48000 -ac 1 -pass 2 -y $2 >/dev/null 2>/dev/null
..........

Ezzel meg a 4 s-os előlap-részt:
...........
for i in `seq 250`
do
ln -s $1 cc-`printf "%03d" $i`.png
done

ffmpeg -i cc-%03d.png -vcodec mpeg2video -r 25.00 -s 1024x576 -aspect 16:9 -b 1200k -mbd rd -trellis -mv0 -cmp 2 -subcmp 2 -i csend10.wav -acodec mp2 -ab 128kb -ar 48000 -ac 1 -y `basename $1 .png`.mpg
............

(A 10s-os ehhez tök hasonló.)

Tehát mindegyik helyen explicite megadom a felbontást és az aspect-et is, és egyenként jó is a lejátszás.

Szerintem így nehéz lesz segítenünk. Ha van 3 publikus videód, amiket nem tudsz így összefűzni, akkor megoszthatnád őket.

OK, itt van 3 mpg, melyeket a fenti ffmpeg szkriptekkel gyártottam:

http://www.sze.hu/~horvatha/Tmp

Ezeket a

mencoder -oac copy -ovc copy -idx -o Kesz/tmp.mpg cimlap_copyright.mpg cimlap_tobbvissz_1.mpg fizopt-36.mpg

paranccsal szeretném összefűzni. Erre dobja ki, hogy az utolsó komponens (a fizopt-36.mpg) szerinte 1024x1024-es, ezért nem fűzi össze.

cat-tal összefűzve egy mplayer-nek és vlc-nek megfelelő anyagot kapok, de ez nem jó a MediaPlayer-nek.

Ha a cat-tal összefűzöttet eresztem át a 'mencoder -idx'-en, akkor kapok egy fájlt, de azt meg a VLC nem játssza le...

PS1: Tudom, elég műveletlen vagyok mozgókép ügyben, ezt kár kritizálni.

PS2: Az előadások anyagát ingyen, bérmentve, segéderő nélkül veszem fel a levelezős hallgatók kedvéért. Tudom, hogy nem a legjobb a minőség, ezt kár kifogásolni.

Nem tudom ez segít-e. Letöltöttem a videókat, lefuttattam a parancsodat, végigolvastam a kimenetet:

a kis videók MPEG1-ben, a nagy MPEG2-ben van. Mellesleg panaszkodik is (WARNING: OUTPUT FILE FORMAT IS _AVI_. See -of help.), de a -of mpeg nem oldja meg a problémát.

Egyébként szerintem nincs okod panaszra, a kivetített szöveg látszódik, a beszéd érthető, teljesen rendben van.

"a kis videók MPEG1-ben, a nagy MPEG2-ben van.": Hopp! Mit lehet ez ellen tenni. Fentebb betettem a generáláskor használt szkripteket. Mit kellene azon változtatni, hogy mind azonos típusú legyen? Hisz mindegyiket "-vcodec mpeg2video"-val generálom! Valamit nagyon nem értek.

ffmpeg -i cimlap_copyright.mpg -vcodec mpeg2video cimlap_copyright_mpeg2.mpg
ffmpeg -i cimlap_tobbvissz_1.mpg -vcodec mpeg2video cimlap_tobbvissz_1_mpeg2.mpg
mencoder -of mpeg -oac mp3lame -ovc copy -idx -o kesz.mpg cimlap_copyright_mpeg2.mpg cimlap_tobbvissz_1_mpeg2.mpg fizopt-36.mpg

Én ezekhez a dolgokhoz nem értek, a google segített. A hangot újratömörítem, de feleslegesen. Lehet, hogy lenne valamilyen jó opció. Lehetne aviban is (attól a videó még mpeg, az avi csak a tároló formátum), ha elhagyod a -of mpeg opciót.

Kösz, ez rávezetett a megoldásra.

Hiába volt az én szkriptjeimben is benne, hogy "-vcodec mpeg2video", úgy tűnik, túl elöl volt a parancssorban. Hátrébb pakoltam, most már a címlap-gyártó szkriptek is mpeg2-t generálnak, így meg megy a mencoder-es átpörgetés.

Hát, erre mondják, hogy az ffmpeg-hez pilótavizsga kell, mert a hibaüzenetekből ez nagyon nem derült ki.

Még egyszer kösz!

Nem megoldás, megkerülés: nézd meg az avimerge parancsot is (transcode csomag), az nekem többször adott helyes eredményt, mint a mencoder (avimerge -o kesz.mpg -i 1.mpg 2.mpg). Én ezt bőven betudom a mencoder irgalmatlan mennyiségű opciójának és az én hozzá nem értésemnek, de mivel pont ugyanígy sok film kötegelt feldolgozához kerestem eszközt, nekem bejött.

Szerintem az avimerge csak avi-t tud. Persze lehet hogy nem.

Sajnos, ez nekem nem segített.

"[avilib.c] AVI open: avilib - Not an AVI file"

-t kaptam. (Ami persze érthető.)

Szerk: Ja, és az mpgjoin sem működik, igaz, az írja is, hogy mp2-es videóra csak kísérleti fázisban van.

Csak egy 'megkerülős' ötlet: Ha párosával fűzöd össze a videókat és nem hármat egyszerre, az nem segít? Pl. összegyúrod külön a főcím és a copyright videókat és utána ehhez az anyagot? Csak egy ötlet, talán egy próbát megér..

Próbáltam, nem megy, de kösz.

Most egy új workaround-ot próbálok: cat-tal összefűzni, mencoder -idx-szel átpörgetni (eddig megvolt, csak a vlc nem szerette az eredményt) és az újdonság: explicite megadni, hogy "-of mpeg" az átpörgetéskor. Ez egy példán jól működött. Most próbálom tovább.