PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : h264 Film reparieren


leon22
11.01.07, 13:17
Habe eine selbst encodierte Datei (h.264 Codec) die statt der 43 min. nur 44 Sekunden anzeigt und abspielt (tritt nur bei dieser auf, also kein Encodierungsfehler bei den Optionen).
Die Größe des Filmes stimmt auch (386MB), also müsste ein Reparieren mit mencoder/transcode doch möglich sein !

Hab es schon mit einem simplen kopieren versucht, leider ohne Erfolg !


mencoder -forceidx -oac copy -ovc copy input.264 -o output.avi


Für weitere Tipps wäre ich dankbar !

mfg leon22

Teetrinker
11.01.07, 14:19
Was passiert wenn du es mit MP4Box nach MP4 muxst?

MP4Box -add input.264:fps=FPSangeben output.mp4

leon22
11.01.07, 15:58
ok bei


MP4Box -add input.264:fps=25 output.mp4


folgende Fehlermeldung


Cannot find H264 start code
Error: BitStream Not CompliantError importing input.264:fps=25: BitStream Not Compliant


Welches er allerdings auch bei den anderen die ja optimal funktionieren ausgibt.

mfg leon22

Teetrinker
11.01.07, 16:45
ok bei


Cannot find H264 start code
Error: BitStream Not CompliantError importing input.264:fps=25: BitStream Not Compliant


Welches er allerdings auch bei den anderen die ja optimal funktionieren ausgibt.


Wenn MP4Box behauptet das der RAW H.264 Stream nicht compilant ist, sind die Changen recht hoch das dem auch so ist, unabhängig davon wie ein anderes Programm damit umgeht. Vielleicht fehlt die start code prefix am Anfang? Öffne die Datei mal in einem Hexeditor und schau nach ob du "00 00 00 01" am Anfang findest(oder im späteren Verlauf der Datei).

Wie hast du die Datei erstellt?

leon22
11.01.07, 16:59
ok hier mal der Hex Output


Offset : 0 1 2 3 4 5 6 7- 8 9 A B C D E F : Ascii
-----------|--------------------------------------------------|-----------------
0000000000 : 52 49 46 46 58 E1 6E 00-41 56 49 20 4C 49 53 54 : RIFFX.n.AVI LIST
0000000010 : 7E 01 00 00 68 64 72 6C-61 76 69 68 38 00 00 00 : ~...hdrlavih8...
0000000020 : 40 9C 00 00 00 00 00 00-00 00 00 00 10 09 00 00 : @...............
0000000030 : 6D 04 00 00 00 00 00 00-02 00 00 00 00 00 00 00 : m...............
0000000040 : 00 02 00 00 80 01 00 00-00 00 00 00 00 00 00 00 : ................
0000000050 : 00 00 00 00 00 00 00 00-4C 49 53 54 C0 00 00 00 : ........LIST....
0000000060 : 73 74 72 6C 73 74 72 68-38 00 00 00 76 69 64 73 : strlstrh8...vids
0000000070 : 68 32 36 34 00 00 00 00-00 00 00 00 00 00 00 00 : h264............
0000000080 : 01 00 00 00 19 00 00 00-00 00 00 00 6D 04 00 00 : ............m...
0000000090 : 6B 9B 00 00 00 00 00 00-00 00 00 00 00 00 00 00 : k...............
00000000A0 : 00 02 80 01 73 74 72 66-28 00 00 00 28 00 00 00 : ....strf(...(...
00000000B0 : 00 02 00 00 80 01 00 00-01 00 18 00 68 32 36 34 : ............h264
00000000C0 : 00 00 09 00 00 00 00 00-00 00 00 00 00 00 00 00 : ................
00000000D0 : 00 00 00 00 76 70 72 70-44 00 00 00 00 00 00 00 : ....vprpD.......
00000000E0 : 00 00 00 00 19 00 00 00-00 02 00 00 80 01 00 00 : ................
00000000F0 : 03 00 04 00 00 02 00 00-80 01 00 00 01 00 00 00 : ................
0000000100 : 80 01 00 00 00 02 00 00-80 01 00 00 00 02 00 00 : ................
0000000110 : 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 : ................
0000000120 : 4C 49 53 54 6A 00 00 00-73 74 72 6C 73 74 72 68 : LISTj...strlstrh
0000000130 : 38 00 00 00 61 75 64 73-55 00 00 00 00 00 00 00 : 8...audsU.......
0000000140 : 00 00 00 00 15 00 00 00-80 04 00 00 80 BB 00 00 : ................
0000000150 : 00 00 00 00 74 07 00 00-C0 03 00 00 00 00 00 00 : ....t...........
0000000160 : 00 00 00 00 00 00 00 00-00 00 00 00 73 74 72 66 : ............strf
0000000170 : 1E 00 00 00 55 00 02 00-80 BB 00 00 1E 72 00 00 : ....U........r..


Nun meine Optionen zum Erstellen des Filmes


mencoder input.vob -vf pp=md,scale -zoom -xy 512 -o output.264 -oac mp3lame -ovc x264 -x264encopts bitrate=1000 -lameopts vol=6 -aid 129


mfg leon22

Teetrinker
11.01.07, 17:26
Willst du ein AVI erstellen oder einen RAW H.264/AVC Stream? Bei der von dir geposteten Befehlszeile wird ein AVI erstellt(siehe auch den Hex Output). Wenn du mit mencoder einen RAW Stream erstellen willst mußt du "-of rawvideo" mit angeben.

Du kannst mit MP4Box den Video Stream aus dem AVI nach RAW demuxen und dann später nach MP4 remuxen
MP4Box -aviraw video deineDatei.avi

leon22
11.01.07, 17:36
Ich hab ein avi File mithilfe des h264 Codecs von ffmpeg erstellt und mit der Endung 264 versehen.

Kann ich das File vielleicht irgendwie noch reparieren oder eher keine Chance (ist ein DVD Rip) ?!


Habs auch mit MP4Box -aviraw video deineDatei.avi versucht aber wieder nur 44 sek. !!!


mfg leon22

Teetrinker
11.01.07, 17:41
Man sollte einer Datei nach Möglichkeit besser immer die Richtige Endung geben. Hatte vorhin noch etwas in meiner Atwort geändert siehe bei ..

leon22
11.01.07, 17:48
Wie schon geschrieben hab ich das schon ausprobiert. Aber wieso sollte ich die Datei nicht mit der Endung 264 versehen (avi files mit divx codierung werden auch divx genannt)

Kann aber auch sein dass ich was falsch verstanden habe bei der h264 Spezifikation !

mfg leon22

Teetrinker
11.01.07, 18:21
Wie schon geschrieben hab ich das schon ausprobiert. Aber wieso sollte ich die Datei nicht mit der Endung 264 versehen (avi files mit divx codierung werden auch divx genannt)

Kann aber auch sein dass ich was falsch verstanden habe bei der h264 Spezifikation !

mfg leon22

Weil .h264 oder .264 die Dateiendung für RAW Streams sind du aber AVI verwendest.

Bei DivX Dateien ist es wieder etwas anderes. DivX hat den AVI Container etwas verändert und nennt ihre Dateien jetzt wie du erwähnst .divx. Aber nur weil das bei DivX so ist, muß das bei h.264 noch lange nicht richtig sein.

Du könntest noch versuchen ob du einen längeren RAW Stream bekommst wenn du "avi2raw" von mpeg4ip.sf.net verwendest.

Oder ob mkvmerge (GUI) von http://www.bunkus.org/videotools/mkvtoolnix/ mehr als 44sec importiert. Du könntest mit der SVN Version vielleicht Erfolg haben, da diese RAW H.264 import unterstützt. Habe aber keine Ahnung wie sich mkvmerge(SVN) verhält wenn es den H.264 Stream im AVI bekommt. Habe die SVN Version noch nicht getestet.

leon22
11.01.07, 23:05
Also erstmals vielen Dank für deine Antworten. Werde dies sobald wie möglich testen.
Eine Frage hab ich aber noch: Meine avi Files mit h264 Codec sind von den mencoder optionen her schon den Spezifikationen entsprechend, oder sollte ich da was ändern; bzw welche Vor-/Nachteile hat RAW H.264 ??

mfg und DANKE leon22

Teetrinker
12.01.07, 11:15
Eine Frage hab ich aber noch: Meine avi Files mit h264 Codec sind von den mencoder optionen her schon den Spezifikationen entsprechend, oder sollte ich da was ändern;
...

Frage von mir auf welche Spezifikationen beziehst du dich immer? Mencoder verwendet zum erstellen von H.264/AVC Elementary Streams - x264, welches sich nach ISO/IEC 14496-10 oder dem entsprechenden ITU-T Äquivalent richtet.

Was deine Befehlszeile betrifft ist die so weit in Ordnung. Du könntest vielleicht noch mit ein paar x264encopts experimentieren.
Schau mal hier http://www.mplayerhq.hu/DOCS/man/de/mplayer.1.html#CODEC-SPEZIFISCHE ENCODING-OPTIONEN (NUR BEI MENCODER) unter x264enc.


...
bzw welche Vor-/Nachteile hat RAW H.264 ??

Ein RAW H.264 Stream ist halt nur Video und du mußt ihn noch in einen geeigneten Container wie MP4 oder MKV muxen.

Wenn du "-of rawvideo" mit mencoder verwendest solltest du noch noch unter VideoFilter(-vf) "harddup" verwenden damit es nicht zu Synchronisationsproblemen kommt.
Ausnahme du machst ein inverse Telecine, dann muß man harddub weglassen, wenn ich das richtig in Erinnerung habe.

AVI habe ich oben bei geeigneten Containern absichtlich nicht erwähnt. Jetzt sprechen wir ein Thema an das sich wunderbar dafür eignet Flamewars zu beginnen. Für welchen Video Codec eignet sich welcher Container ;) .
Suche mal auf http://forum.doom9.net/ oder http://forum.gleitz.info/ nach x264 und AVI.

Ich persönlich bevorzuge MP4 aber je nach dem wo man seine erstellten Videos abspielen will eignet sich auch MKV(Matroska).

Da mencoder keinen funktionierenden MP4 Output besitzt könntest du einen Blick auf http://www.avidemux.org/ werfen oder du gehst den Umweg über RAW Ausgabe und muxst es nach MP4 mit MP4Box.

>MP4Box -isma -add video.264:fps=25:lang=ger video.mp4 -add audio.mp4#1:lang=ger -out output.mp4

Den Audio Stream könntest du mit neroAacEnc.exe(wine) von hier http://www.nero.com/nerodigital/eng/Nero_Digital_Audio.html encodieren.

>wine neroAacEnc.exe -q 0.400 -if "audio.wav" -of "audio.mp4"

Der Nero Encoder hat gegenüber faac den Vorteil dass er auch noch sbr(he-aac) unterstützt. Würde He-aac aber nur bei sehr geringen Bitraten verwenden, kleiner gleich 64kbit oder um bei Multichannel(5.1) Bits zu sparen.

Um einen Multicahnnel Stream zu erstellen könntest du neroAacEnc.exe wie folgt füttern.

>mkfifo audio.wav
>wine ./neroAacEnc.exe -ignorelength -q 0.3 -if audio.wav -of audio.mp4 & mplayer -vc null -vo null -af channels=6:6:0:0:1:1:2:4:3:5:4:2:5:3 -ao pcm:waveheader:file=audio.wav -channels 6 test.mpg

Da mplayer ein anderes Channel Mapping verwendet als der Encoder von Nero erwartet muß dieses mit -af channels=6:6:0:0:1:1:2:4:3:5:4:2:5:3 korrigiert werden. Hoffe das Mapping stimmt so, habe leider selber keine 5.1 Anlage diereckt an den PC angeschlossen.

Aber einfacher dürfte es mit http://www.avidemux.org/ klappen.