Verständnisfrage mp4 mkv / MP4Box mkvmerge
Ich blicke mit den Containern nicht mehr durch bzw. warum etwas funktioniert. Irgendwo las ich, dass mkvmerge zur Zeit kaputt ist, es hat aber mit 25fps ganz gut funktioniert, mit einer anderen VideoFrameRate aber nicht. Kann man nun mit MP4Box einen mkv-Container erzeugen oder nicht? Das funktioniert, FRAMERATE=`exiftool -q -q -s -s -s -VideoFrameRate "$AVIFILE"` MP4Box -fps "$FRAMERATE" -add "$MP3FILE" "$MKVFILE" MP4Box -fps "$FRAMERATE" -add "$X264FILE" "$MKVFILE im Gegensatz zu mkvmerge -o "$MKVFILE" "$X264FILE" "$MP3FILE" bei einer VideoFrameRate von 30. Ist es MP4Box bzw. den Videoplayern (auch Hardware) egal, dass die Endung mkv ist und es wurde gar kein mkv-Container erzeugt? In der mkvmerge-Manpage habe ich nichts gefunden um die VideoFrameRate zu definieren. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 24 Mai 2010, Al Bogner schrieb:
Ich blicke mit den Containern nicht mehr durch bzw. warum etwas funktioniert. Irgendwo las ich, dass mkvmerge zur Zeit kaputt ist, es hat aber mit 25fps ganz gut funktioniert, mit einer anderen VideoFrameRate aber nicht.
Soweit ich weiß schert sich mkvmerge nicht weiter um sowas. Hat denn das AVI die richtigen FPS gesetzt? Ggfs. per avifix -f 30,1 -i AVIFILE oder auch mencoder setzen. HTH, -dnh -- Q: Warum habe so viele Männer O-Beine? A: Unwichtiges wird eben in Klammern gesetzt. -- David Leukert im Quatsch Comedy Club -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag 24 Mai 2010 11:50:20 schrieb David Haller: Hallo David,
Am Mon, 24 Mai 2010, Al Bogner schrieb:
Ich blicke mit den Containern nicht mehr durch bzw. warum etwas funktioniert. Irgendwo las ich, dass mkvmerge zur Zeit kaputt ist, es hat aber mit 25fps ganz gut funktioniert, mit einer anderen VideoFrameRate aber nicht.
Soweit ich weiß schert sich mkvmerge nicht weiter um sowas. Hat denn das AVI die richtigen FPS gesetzt? Ggfs. per
avifix -f 30,1 -i AVIFILE
oder auch mencoder setzen.
Ich denke, das Problem mit den Digicam-Files liegt schon bei mencoder. Ich nahm an, wenn man nichts angibt, dann bleibt die Video Frame Rate so wie sie ist. Das dürfte aber nicht so sein. ffmpeg -i mencoder_ohne_audio_file Seems stream 0 codec frame rate differs from container frame rate Sieht also so aus, dass es nicht an mkvmerge liegt, sondern MP4Box nur repariert. Quelle: mediainfo digicam_test.avi General Complete name : digicam_test.avi Format : AVI Format/Info : Audio Video Interleave File size : 26.8 MiB Duration : 32s 500ms Overall bit rate : 6 906 Kbps Video ID : 0 Format : M-JPEG Codec ID : MJPG Duration : 32s 500ms Bit rate : 6 829 Kbps Width : 640 pixels Height : 480 pixels Display aspect ratio : 4:3 Frame rate : 30.000 fps Resolution : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.741 Stream size : 26.5 MiB (99%) Audio Format : ADPCM Format profile : U-Law Codec ID : 7 Codec ID/Hint : CCITT Duration : 32s 475ms Bit rate mode : Constant Bit rate : 64.0 Kbps Channel(s) : 1 channel Sampling rate : 8 000 Hz Resolution : 8 bits Stream size : 254 KiB (1%) Interleave, duration : 33 ms (1.00 video frame) Ein -ofps bei mencoder mit dem Wert des Originals hilft auch nicht. Die übeflüssigen Optionen, wie Deinterlace sollten doch nicht schaden? mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=1 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c:5x5:0.1 \ -sws 9 -nosound -of rawvideo -o /dev/null $AVIFILE mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=2 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c.5x5:0.1 \ -sws 9 -nosound -of rawvideo -o "$X264FILE" "$AVIFILE" ffmpeg -i digicam_test.x264 FFmpeg version SVN-r22965, Copyright (c) 2000-2010 the FFmpeg developers built on Apr 28 2010 06:39:00 with gcc 4.3.2 [gcc-4_3-branch revision 141291] configuration: --shlibdir=/usr/lib64 --prefix=/usr --mandir=/usr/share/man -- libdir=/usr/lib64 --enable-shared --enable-libmp3lame --enable-libvorbis -- enable-libtheora --enable-libspeex --enable-libfaad --enable-libfaac --enable- nonfree --enable-libxvid --enable-postproc --enable-gpl --enable-x11grab -- enable-libschroedinger --enable-libdirac --enable-libgsm --enable-version3 -- enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable- libdc1394 --enable-pthreads libavutil 50.14. 0 / 50.14. 0 libavcodec 52.66. 0 / 52.66. 0 libavformat 52.61. 0 / 52.61. 0 libavdevice 52. 2. 0 / 52. 2. 0 libswscale 0.10. 0 / 0.10. 0 libpostproc 51. 2. 0 / 51. 2. 0 [h264 @ 0x64b0b0]max_analyze_duration reached [h264 @ 0x64b0b0]Estimating duration from bitrate, this may be inaccurate Seems stream 0 codec frame rate differs from container frame rate: 60.00 (60/1) -> 30.00 (60/2) Input #0, h264, from 'digicam_test.x264': Duration: N/A, bitrate: N/A Stream #0.0: Video: h264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 30 fps, 30 tbr, 1200k tbn, 60 tbc At least one output file must be specified Das könnte auch erklären, warum der Popcorn nur vorspulen kann, aber nicht zurück. http://www.rationalplanet.com/2010/03/fixing-wrong-or-different-frame-rate-o... video-file-and-container-the-right-way/ You might want to remux the resulting m4v file to mkv with mkvmerge to support rewinds in WDTV. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 24 Mai 2010, Al Bogner schrieb: [..]
mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=2 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c.5x5:0.1 \ -sws 9 -nosound -of rawvideo -o "$X264FILE" "$AVIFILE" ^^^^^^^^^^^^ Das ist dein Fehler, denke ich.
Du schreibst nen rohen Videostrom, kein AVI. Laß -of weg oder nimm '-of avi' was der default ist. -dnh -- sigmonster ist gassi... -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Montag 24 Mai 2010 16:41:37 schrieb David Haller: Hallo David,
Am Mon, 24 Mai 2010, Al Bogner schrieb: [..]
mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=2 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c.5x5:0.1 \ -sws 9 -nosound -of rawvideo -o "$X264FILE" "$AVIFILE"
^^^^^^^^^^^^ Das ist dein Fehler, denke ich.
Du schreibst nen rohen Videostrom, kein AVI. Laß -of weg oder nimm '-of avi' was der default ist.
Jetzt mag MP4Box nicht mehr, aber mkv ist synchron. Was ich so recherchiert habe, erwartet MP4box rawvideo, aber es soll eine Option für avi geben, die ich aber nicht gefunden habe. Das Problem ist "Cannot find H264 start code". $AVIFILE ist Original von der Digicam. Aus dem Script: FRAMERATE=`exiftool -q -q -s -s -s -VideoFrameRate "$AVIFILE"` mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader "$AVIFILE" & mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=1 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c:5x5:0.1 \ -sws 9 -nosound -o /dev/null $AVIFILE lame --quiet --preset standard audiodump.wav "$MP3FILE" & mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=2 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c.5x5:0.1 \ -sws 9 -nosound -o "$X264FILE" "$AVIFILE" mkvmerge -o "$MKVFILE" "$X264FILE" "$MP3FILE" MP4Box -fps "$FRAMERATE" -add "$MP3FILE" "$MP$FILE" MP4Box -fps "$FRAMERATE" -add "$X264FILE" "$MP$FILE" ------------------------------------------------------------- Muxen zu ./test_digicam.x264.mkv mkvmerge v3.3.0 ('Language') '/videos_nfs/test_digicam/test_digicam.x264': Der AVI-Demultiplexer. Das Öffnen der Datei kann, abhängig von der Größe, eine Weile dauern. '/videos_nfs/test_digicam/test_digicam.avi.mp3': Der MP2/MP3-Demultiplexer wird benutzt. '/videos_nfs/test_digicam/test_digicam.x264' Track 0: Informationen über das Seitenverhältnis wurden aus den MPEG-4 layer 10 (AVC) Videodaten extrahiert. Die Anzeigeabmessungen wurden auf 640/480 gesetzt. '/videos_nfs/test_digicam/test_digicam.x264' Track 0: Das MPEG-4 Teil 10 ES- Video-Ausgabemodul wird benutzt. '/videos_nfs/test_digicam/test_digicam.avi.mp3' Track 0: Das MPEG-Audio- Ausgabemodul wird benutzt. Die Datei './test_digicam.x264.mkv' wurde zum Schreiben geöffnet. Fortschritt: 100% Die Cueeinträge (der Index) werden geschrieben... Das Muxen dauerte 3 Sekunden. ------------------------------------------------------------- Muxen zu ./test_digicam.x264.mp4 MP3 import - sample rate 44100 - MPEG-1 audio - 1 channel Saving to : 0.500 secs Interleaving Error: I/O Error Cannot find H264 start code Error importing /videos_nfs/test_digicam/test_digicam.x264: BitStream Not Compliant Diese Sytnax passt also vermutlich noch nicht. Ich hätte das gerne alternativ im Script, falls ich das einmal brauche. MP4Box -fps "$FRAMERATE" -add "$MP3FILE" "$MP$FILE" MP4Box -fps "$FRAMERATE" -add "$X264FILE" "$MP$FILE" Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 24 Mai 2010, Al Bogner schrieb:
Am Montag 24 Mai 2010 16:41:37 schrieb David Haller:
Am Mon, 24 Mai 2010, Al Bogner schrieb: [..]
mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=2 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c.5x5:0.1 \ -sws 9 -nosound -of rawvideo -o "$X264FILE" "$AVIFILE"
^^^^^^^^^^^^ Das ist dein Fehler, denke ich.
Du schreibst nen rohen Videostrom, kein AVI. Laß -of weg oder nimm '-of avi' was der default ist.
Jetzt mag MP4Box nicht mehr, aber mkv ist synchron.
Was ich so recherchiert habe, erwartet MP4box rawvideo, aber es soll eine Option für avi geben, die ich aber nicht gefunden habe.
Das Problem ist "Cannot find H264 start code".
$AVIFILE ist Original von der Digicam.
Zur Not (s.u.) kannst du aus dem .avi (dem von mencoder) auch nachträglich noch das "rohe" H.264 extrahieren: mplayer -dumpvideo -dumpfile foo.h264 foo.avi
Aus dem Script:
FRAMERATE=`exiftool -q -q -s -s -s -VideoFrameRate "$AVIFILE"`
mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader "$AVIFILE" &
mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=1 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c:5x5:0.1 \ -sws 9 -nosound -o /dev/null $AVIFILE
lame --quiet --preset standard audiodump.wav "$MP3FILE" &
mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=2 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c.5x5:0.1 \ -sws 9 -nosound -o "$X264FILE" "$AVIFILE"
mkvmerge -o "$MKVFILE" "$X264FILE" "$MP3FILE"
MP4Box -fps "$FRAMERATE" -add "$MP3FILE" "$MP$FILE" MP4Box -fps "$FRAMERATE" -add "$X264FILE" "$MP$FILE"
Verwende mkvmerge zum muxen. Ich vermute dein Problem lag daran, daß du das rohen H.264 an mkvmerge verfüttert hast, und _dem_ fehlt eben die FPS-Angabe. Im .avi (von mencoder) steckt diese aber drinnen und sollte von mkvmerge auch übernommen werden. Wenn ich meine 08/15 mkvs abspiele sagt mir mplayer das auch, z.B.: VIDEO: [FMP4] 684x384 24bpp 25.000 fps 0.0 kbps ( 0.0 kbyte/s) Ebenso mediainfo (heute frisch noch auf der ollen Kiste gebacken ;), und das schaut auch noch rein in die "Puppe" und guckt, was der Stream für ne Bitrate hat: ==== Bit rate : 720 Kbps Width : 684 pixels Height : 384 pixels Display aspect ratio : 16:9 Frame rate : 25.000 fps ====
Muxen zu ./test_digicam.x264.mkv
mkvmerge v3.3.0 ('Language') '/videos_nfs/test_digicam/test_digicam.x264': Der AVI-Demultiplexer. Das Öffnen der Datei kann, abhängig von der Größe, eine Weile dauern. '/videos_nfs/test_digicam/test_digicam.avi.mp3': Der MP2/MP3-Demultiplexer wird benutzt. '/videos_nfs/test_digicam/test_digicam.x264' Track 0: Informationen über das Seitenverhältnis wurden aus den MPEG-4 layer 10 (AVC) Videodaten extrahiert. Die Anzeigeabmessungen wurden auf 640/480 gesetzt. '/videos_nfs/test_digicam/test_digicam.x264' Track 0: Das MPEG-4 Teil 10 ES- Video-Ausgabemodul wird benutzt. '/videos_nfs/test_digicam/test_digicam.avi.mp3' Track 0: Das MPEG-Audio- Ausgabemodul wird benutzt. Die Datei './test_digicam.x264.mkv' wurde zum Schreiben geöffnet. Fortschritt: 100% Die Cueeinträge (der Index) werden geschrieben... Das Muxen dauerte 3 Sekunden.
Hier wäre jetzt interessant, was mediainfo/mplayer bzgl. FPS zum mkv sagen ;) Die sollten so nämlich stimmen, da "per Container" erhalten ;)
Muxen zu ./test_digicam.x264.mp4
MP3 import - sample rate 44100 - MPEG-1 audio - 1 channel Saving to : 0.500 secs Interleaving Error: I/O Error Cannot find H264 start code Error importing /videos_nfs/test_digicam/test_digicam.x264: BitStream Not Compliant
Da brauchst du wohl das rohe, da kannst du mkvmerge auch weglassen, wenn du das Video nicht eh in beiden Containern haben willst. Matroska/MP4 sind ja nur die Verpackung der div. Streams.
Diese Sytnax passt also vermutlich noch nicht. Ich hätte das gerne alternativ im Script, falls ich das einmal brauche.
MP4Box -fps "$FRAMERATE" -add "$MP3FILE" "$MP$FILE" MP4Box -fps "$FRAMERATE" -add "$X264FILE" "$MP$FILE"
Parameter '-of' mit Optionen mkv -> mkvmerge und mencoder-output als .avi mp4 -> MP4Box und mencoder-output als raw Oder alternativ mencoder immer gleich kodieren lassen und für MP4Box ggfs. die Rohdaten extrahieren. Evtl. ginge das sogar per Pipe ;) Zumindest die mplayer Seite geht (kenne MP4Box nicht): mplayer -dumpvideo -dumpfile /dev/stdout foo.avi | MP4Box -add - "$MP$FILE" ('-dumpfile -' geht nicht!, keine Ahnung ob MP4Box von stdin lesen kann). HTH, -dnh -- 284: Nur der Inhalt zählt! Ich war zu blöd, meinen HTML-Editor richtig zu bedienen. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 26 Mai 2010 03:11:22 schrieb David Haller: Hallo David,
Am Mon, 24 Mai 2010, Al Bogner schrieb:
Am Montag 24 Mai 2010 16:41:37 schrieb David Haller:
Am Mon, 24 Mai 2010, Al Bogner schrieb: [..]
mencoder -ovc x264 -x264encopts qp=28:threads=auto:pass=2 -ofps "$FRAMERATE" \ -vf yadif=0,softskip,harddup \ -vf unsharp=l:5x5:0.9:c.5x5:0.1 \ -sws 9 -nosound -of rawvideo -o "$X264FILE" "$AVIFILE"
^^^^^^^^^^^^ Das ist dein Fehler, denke ich.
Du schreibst nen rohen Videostrom, kein AVI. Laß -of weg oder nimm '-of avi' was der default ist.
Jetzt mag MP4Box nicht mehr, aber mkv ist synchron.
Was ich so recherchiert habe, erwartet MP4box rawvideo, aber es soll eine Option für avi geben, die ich aber nicht gefunden habe.
Das Problem ist "Cannot find H264 start code".
$AVIFILE ist Original von der Digicam.
Zur Not (s.u.) kannst du aus dem .avi (dem von mencoder) auch nachträglich noch das "rohe" H.264 extrahieren: mplayer -dumpvideo -dumpfile foo.h264 foo.avi
Ok, mit anderen Worten, ich muss für mkv und mp4 unterschiedliche Dateien zur Verfügung stellen und kann beim Encodieren mit mencoder die Datei nicht so vorbereiten, dass sie für beides passt.
Verwende mkvmerge zum muxen. Ich vermute dein Problem lag daran, daß du das rohen H.264 an mkvmerge verfüttert hast, und _dem_ fehlt eben die FPS-Angabe. Im .avi (von mencoder) steckt diese aber drinnen und sollte von mkvmerge auch übernommen werden.
Wenn ich meine 08/15 mkvs abspiele sagt mir mplayer das auch, z.B.: VIDEO: [FMP4] 684x384 24bpp 25.000 fps 0.0 kbps ( 0.0 kbyte/s) Ebenso mediainfo (heute frisch noch auf der ollen Kiste gebacken ;), und das schaut auch noch rein in die "Puppe" und guckt, was der Stream für ne Bitrate hat: ==== Bit rate : 720 Kbps Width : 684 pixels Height : 384 pixels Display aspect ratio : 16:9 Frame rate : 25.000 fps ====
Muxen zu ./test_digicam.x264.mkv
mkvmerge v3.3.0 ('Language') '/videos_nfs/test_digicam/test_digicam.x264': Der AVI-Demultiplexer. Das Öffnen der Datei kann, abhängig von der Größe, eine Weile dauern. '/videos_nfs/test_digicam/test_digicam.avi.mp3': Der MP2/MP3-Demultiplexer wird benutzt. '/videos_nfs/test_digicam/test_digicam.x264' Track 0: Informationen über das Seitenverhältnis wurden aus den MPEG-4 layer 10 (AVC) Videodaten extrahiert. Die Anzeigeabmessungen wurden auf 640/480 gesetzt. '/videos_nfs/test_digicam/test_digicam.x264' Track 0: Das MPEG-4 Teil 10 ES- Video-Ausgabemodul wird benutzt. '/videos_nfs/test_digicam/test_digicam.avi.mp3' Track 0: Das MPEG-Audio- Ausgabemodul wird benutzt. Die Datei './test_digicam.x264.mkv' wurde zum Schreiben geöffnet. Fortschritt: 100% Die Cueeinträge (der Index) werden geschrieben... Das Muxen dauerte 3 Sekunden.
Hier wäre jetzt interessant, was mediainfo/mplayer bzgl. FPS zum mkv sagen ;) Die sollten so nämlich stimmen, da "per Container" erhalten ;)
Siehe mein Script (PM, neue Version ist unterwegs), das fragt das zur Benamung ab. Quelle: test_digicam_640x480p_30.000fps_mjpg.avi umkodiert: test_digicam_640x480p_30.000fps_h264.mkv Allerdings Seems stream 0 codec frame rate differs from container frame rate: 60.00 (60/1) -> 29.97 (30000/1001) aus ffmpeg -i test_digicam test_digicam_640x480p_30.000fps_h264.mkv test_digicam.sh test_digicam_640x480p_30.000fps_mjpg.avi ab@client1:/videos_nfs/test_digicam> ffmpeg -i test_digicam_640x480p_30.000fps_h264.mkv FFmpeg version SVN-r22965, Copyright (c) 2000-2010 the FFmpeg developers built on Apr 28 2010 06:39:00 with gcc 4.3.2 [gcc-4_3-branch revision 141291] configuration: --shlibdir=/usr/lib64 --prefix=/usr --mandir=/usr/share/man -- libdir=/usr/lib64 --enable-shared --enable-libmp3lame --enable-libvorbis -- enable-libtheora --enable-libspeex --enable-libfaad --enable-libfaac --enable- nonfree --enable-libxvid --enable-postproc --enable-gpl --enable-x11grab -- enable-libschroedinger --enable-libdirac --enable-libgsm --enable-version3 -- enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable- libdc1394 --enable-pthreads libavutil 50.14. 0 / 50.14. 0 libavcodec 52.66. 0 / 52.66. 0 libavformat 52.61. 0 / 52.61. 0 libavdevice 52. 2. 0 / 52. 2. 0 libswscale 0.10. 0 / 0.10. 0 libpostproc 51. 2. 0 / 51. 2. 0 [matroska @ 0x64b0b0]Estimating duration from bitrate, this may be inaccurate Seems stream 0 codec frame rate differs from container frame rate: 60.00 (60/1) -> 29.97 (30000/1001) Input #0, matroska, from 'test_digicam_640x480p_30.000fps_h264.mkv': Duration: 00:00:32.54, start: 0.000000, bitrate: 128 kb/s Stream #0.0: Video: h264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 29.97 tbr, 1k tbn, 60 tbc Stream #0.1: Audio: mp3, 44100 Hz, 1 channels, s16, 128 kb/s
Muxen zu ./test_digicam.x264.mp4
MP3 import - sample rate 44100 - MPEG-1 audio - 1 channel Saving to : 0.500 secs Interleaving Error: I/O Error Cannot find H264 start code Error importing /videos_nfs/test_digicam/test_digicam.x264: BitStream Not Compliant
Da brauchst du wohl das rohe, da kannst du mkvmerge auch weglassen, wenn du das Video nicht eh in beiden Containern haben willst. Matroska/MP4 sind ja nur die Verpackung der div. Streams.
Nur Verpackung ist gut ;-) Die Verpackung macht mir ziemliche Probleme. Muxen ohne Fehlermeldung scheint eine Kunst zu sein, oder die Fehlermeldungen sind Müll, zB von ffmpeg.
Diese Sytnax passt also vermutlich noch nicht. Ich hätte das gerne alternativ im Script, falls ich das einmal brauche.
MP4Box -fps "$FRAMERATE" -add "$MP3FILE" "$MP$FILE" MP4Box -fps "$FRAMERATE" -add "$X264FILE" "$MP$FILE"
Parameter '-of' mit Optionen mkv -> mkvmerge und mencoder-output als .avi mp4 -> MP4Box und mencoder-output als raw
Oder alternativ mencoder immer gleich kodieren lassen und für MP4Box ggfs. die Rohdaten extrahieren. Evtl. ginge das sogar per Pipe ;) Zumindest die mplayer Seite geht (kenne MP4Box nicht):
Klar, ich brauche auch MP4Box nicht unebdedingt, wenn es mit mkv klappt. Rückspulen ist nach wie vor am Hardware-Player nicht, das mich vermuen lasst, dass da irgendwas mit den Optionen nicht stimmt.
mplayer -dumpvideo -dumpfile /dev/stdout foo.avi | MP4Box -add - "$MP$FILE"
('-dumpfile -' geht nicht!, keine Ahnung ob MP4Box von stdin lesen kann).
Ich hoffe, dass ich es mit mkv hinbekomme, wäre mir viel lieber Matroska als Container zu haben, aber notfalls muss ich mp4 nehmen. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (2)
-
Al Bogner
-
David Haller