PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ffmpeg] Audiospur aus MP4 extrahiert -> Dauer wird nicht korrekt angezeigt



Warren
22.10.10, 23:06
Guten Abend!

Ich habe mittels ffmpeg -i input.mp4 -acodec copy output.aac eine AAC-kodierte Audiospur aus einem MP4-Container extrahiert. Wenn ich die Datei anschließend abspiele, tritt dieses Phänomen auf, dass die Dauer nicht sofort korrekt ermittelt werden kann, sondern für einige Sekunden lang rückläufig ist.

Spiele ich die Quelldatei selbst ab, wird die Dauer richtig angezeigt. Ich weiß nicht, wie ein MP4-Container aufgebaut ist. Gibt es sowas wie Metadaten, in denen solche Informationen gespeichert sind? Muss ich ffmpeg explizit sagen, dass die Laufzeit in der zu erzeugenden Audiodatei hinterlegt werden muss?

Hier noch die Ausgabe von ffmpeg:


FFmpeg version 0.6-rpmfusion, Copyright (c) 2000-2010 the FFmpeg developers
built on Jul 27 2010 03:51:42 with gcc 4.4.4 20100630 (Red Hat 4.4.4-10)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --extra-version=rpmfusion --enable-bzlib --enable-libdc1394 --enable-libdirac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avfilter-lavf --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil 50.15. 1 / 50.15. 1
libavcodec 52.72. 2 / 52.72. 2
libavformat 52.64. 2 / 52.64. 2
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.19. 0 / 1.19. 0
libswscale 0.11. 0 / 0.11. 0
libpostproc 51. 2. 0 / 51. 2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
Duration: 00:04:39.00, start: 0.000000, bitrate: 407 kb/s
Stream #0.0(und): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 275 kb/s, 12 fps, 12 tbr, 1k tbn, 24 tbc
Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 127 kb/s
Output #0, adts, to 'output.aac':
Metadata:
encoder : Lavf52.64.2
Stream #0.0(und): Audio: aac, 44100 Hz, stereo, 127 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Press [q] to stop encoding
size= 4440kB time=278.96 bitrate= 130.4kbits/s
video:0kB audio:4358kB global headers:0kB muxing overhead 1.884556%

Mit freundlichem Gruß

Eurer Warren

Teetrinker
23.10.10, 12:13
Hi,
versuche mal den Track mit MP4Box ( http://gpac.sourceforge.net/ )zu extrahieren.

Die Track Nummer des Audio Tracks wie folgt ermitteln:
MP4Box -info deineDatei.mp4

Track extrahieren:
MP4Box -raw TrackNummer deineDatei.mp4

Warren
26.10.10, 13:40
Danke für deinen Hinweis!

Habe es ausprobiert, aber, die Rohdaten des Audiotracks mit MP4Box zu extrahieren, führt zum exakt gleichen Ergebnis wie mit ffmpeg. Mittlerweile habe ich rausgefunden, dass der Audiotrack einen MP4-Container benötigt, damit die Abspieldauer korrekt angezeigt wird. Also einfach ffmpeg -i input.mp4 -vn -acodec copy output.mp4