Video und Audio mit ffmpeg zusammenführen

blanc

Lt. Junior Grade
Registriert
Jan. 2018
Beiträge
320
Moin,

Mit dem folgenden Befehl möchte ich eine Video Datei und eine Audio Datei zusammenführen:

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 2.3.mp4

Das Problem ist die letzten Minuten sind nicht zu hören obwohl die Audio Datei wunderbar funktioniert. Woran liegt das?

ffmpeg Info:

ffmpeg version N-49268-ge9d443c Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 24 2013 23:27:01 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 52. 15.103 / 52. 15.103
libavcodec 54. 90.100 / 54. 90.100
libavformat 54. 61.104 / 54. 61.104
libavdevice 54. 3.102 / 54. 3.102
libavfilter 3. 33.100 / 3. 33.100
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf54.61.104
Duration: 00:15:46.00, start: 0.000000, bitrate: 199 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x540, 178 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, mono, s16p, 64 kb/s
Metadata:
handler_name : SoundHandler
[mp3 @ 02249080] max_analyze_duration 5000000 reached at 5016000 microseconds
Input #1, mp3, from 'audio.mp3':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41isomavc1
encoder : Lavf57.83.100
Duration: 00:15:46.03, start: 0.000000, bitrate: 49 kb/s
Stream #1:0: Audio: mp3, 48000 Hz, mono, s16p, 64 kb/s
Output #0, mp4, to '2.3.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf54.61.104
Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 720x540, q=2-31, 178 kb/s, 25 fps, 12800 tbn, 12800 tbc
Metadata:
handler_name : VideoHandler
Stream #0:1: Audio: mp3 (i[0][0][0] / 0x0069), 48000 Hz, mono, 64 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 6965 fps=0.0 q=-1.0 size= 8356kB time=00:04:38.52 bitrate= 245.8kbits/s
frame=16492 fps=16393 q=-1.0 size= 19501kB time=00:10:59.56 bitrate= 242.2kbits/s
frame=18925 fps=12487 q=-1.0 size= 21230kB time=00:12:36.88 bitrate= 229.8kbits/s
frame=20141 fps=9948 q=-1.0 size= 21230kB time=00:13:25.52 bitrate= 215.9kbits/s
frame=21433 fps=8458 q=-1.0 size= 21230kB time=00:14:17.20 bitrate= 202.9kbits/s
frame=22506 fps=7396 q=-1.0 size= 21230kB time=00:15:00.12 bitrate= 193.2kbits/s
frame=23650 fps=6782 q=-1.0 Lsize= 26951kB time=00:15:45.88 bitrate= 233.4kbits/s

video:20573kB audio:5706kB subtitle:0 global headers:0kB muxing overhead 2.557794%
 
Keine Ahnung. Was mir aber aufgefallen ist:
ffmpeg version N-49268-ge9d443c Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 24 2013 23:27:01 with gcc 4.7.2 (GCC)
Warum benutzt du eine 9 Jahre alte Version von ffmpeg? Hast du mal einfach eine aktuellere Version probiert?
 
  • Gefällt mir
Reaktionen: PHuV
Im Log sehe ich
[mp3 @ 02249080] max_analyze_duration 5000000 reached at 5016000 microseconds
Input #1, mp3, from 'audio.mp3':
Vielleicht hat es damit zu tun, es wird einfach nur das gemuxt, was ffmpeg in den 5 Sekunden analysieren konnte. Wahrscheinlich kann man die max_analyze_duration ändern?
Sonst wäre auch meine Empfehlung, mal ein neueres ffmpeg auszuprobieren.
 
Das andere hast du auch mal ausprobiert? Der Befehl könnte dann bspw. so aussehen:
Code:
ffmpeg -i video.mp4 -analyzeduration 1000M -probesize 1000M -i audio.mp3 -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 2.3.mp4
(Hab die Werte in dem Beispiel jetzt mal absichtlich sehr hoch gewählt, dann sollte die Audiodatei komplett analysiert werden.)
 
Zurück
Oben