2

I'm using the following command to combine a video and an audio track.

ffmpeg -y -i /var/www/temp/merged.mp4 -i /var/www/temp/combined.mp3 -strict -2 /var/www/temp/videoExtouiulbjryzxlehjj2.mp4

Edit:

Here is the output from the first command

ffmpeg version 2.5.10-0ubuntu0.15.04.1 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/temp/merged.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.15.102
  Duration: 00:02:31.80, start: 0.000000, bitrate: 2384 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2381 kb/s, 25.43 fps, 29.97 tbr, 11988 tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 0 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #1, mp3, from '/var/www/temp/audioTrack.mp3':
  Metadata:
    encoder         : Lavf56.15.102
  Duration: 00:02:08.94, start: 0.011995, bitrate: 128 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : Lavf
[libx264 @ 0x1e903a0] using SAR=1/1
[libx264 @ 0x1e903a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX AVX2 FMA3 LZCNT BMI2
[libx264 @ 0x1e903a0] profile High, level 4.0
[libx264 @ 0x1e903a0] 264 - core 142 r2495 6a301b6 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to '/var/www/temp/videoExtvzxvphotsyfpcbkd.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.15.102
    Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc56.13.100 libx264
    Stream #0:1(und): Audio: mp3 (libmp3lame) (i[0][0][0] / 0x0069), 48000 Hz, stereo, fltp (default)
    Metadata:
      handler_name    : SoundHandler
      encoder         : Lavc56.13.100 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
frame=   31 fps=0.0 q=0.0 size=       0kB time=00:00:01.05 bitrate=   0.4kbits/s dup=1 drop=0frame=   46 fps= 41 q=0.0 size=       0kB time=00:00:01.56 bitrate=   0.2kbits/s dup=1 drop=0frame=   52 fps= 32 q=29.0 size=     149kB time=00:00:01.75 bitrate= 698.4kbits/s dup=1 drop=frame=   64 fps= 28 q=29.0 size=     258kB time=00:00:02.16 bitrate= 977.2kbits/s dup=1 drop=frame=   74 fps= 26 q=29.0 size=     389kB   
video:39673kB audio:211kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.143487%
[libx264 @ 0x1e903a0] frame I:27    Avg QP:18.78  size: 58834
[libx264 @ 0x1e903a0] frame P:2202  Avg QP:23.67  size: 14187
[libx264 @ 0x1e903a0] frame B:2323  Avg QP:25.75  size:  3356
[libx264 @ 0x1e903a0] consecutive B-frames: 24.7% 18.7%  9.0% 47.5%
[libx264 @ 0x1e903a0] mb I  I16..4: 18.8% 74.7%  6.5%
[libx264 @ 0x1e903a0] mb P  I16..4:  2.1%  5.0%  0.3%  P16..4: 22.2%  6.0%  1.9%  0.0%  0.0%    skip:62.5%
[libx264 @ 0x1e903a0] mb B  I16..4:  0.1%  0.3%  0.0%  B16..8: 19.9%  1.0%  0.1%  direct: 0.3%  skip:78.3%  L0:42.3% L1:55.3% BI: 2.4%
[libx264 @ 0x1e903a0] 8x8 transform intra:68.2% inter:86.5%
[libx264 @ 0x1e903a0] coded y,uvDC,uvAC intra: 35.8% 52.3% 4.5% inter: 5.2% 7.4% 0.0%
[libx264 @ 0x1e903a0] i16 v,h,dc,p: 28% 23%  8% 40%
[libx264 @ 0x1e903a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 20% 22%  3%  6%  6%  7%  5%  4%
[libx264 @ 0x1e903a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 21% 14%  4%  8%  7%  7%  4%  3%
[libx264 @ 0x1e903a0] i8c dc,h,v,p: 56% 18% 20%  6%
[libx264 @ 0x1e903a0] Weighted P-Frames: Y:0.9% UV:0.2%
[libx264 @ 0x1e903a0] ref P L0: 73.4% 13.0% 10.0%  3.6%  0.0%
[libx264 @ 0x1e903a0] ref B L0: 92.2%  6.7%  1.1%
[libx264 @ 0x1e903a0] ref B L1: 96.6%  3.4%
[libx264 @ 0x1e903a0] kb/s:2139.74

End Edit

I know this should work since the exact line does work for other files. But the result with these is a silent video.

I checked the audio file being used and it seemed fine when played. but I did get a weird warning when creating it. Basically I have 2 audio tracks, one is overlay music and the other is talking. I create the combined audio with this command.

ffmpeg -y -i /var/www/temp/audioTrack.mp3 -i /var/www/temp/musicTrack.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 /var/www/temp/combined.mp3

Here is the output from the second command.

ffmpeg version 2.5.10-0ubuntu0.15.04.1 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mp3, from '/var/www/temp/audioTrack.mp3':
  Metadata:
    encoder         : Lavf56.15.102
  Duration: 00:02:08.89, start: 0.025057, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : Lavc56.13
Input #1, mp3, from '/var/www/temp/musicTrack.mp3':
  Metadata:
    encoder         : Lavf56.15.102
  Duration: 00:02:08.89, start: 0.025057, bitrate: 128 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : Lavc56.13
[Parsed_amerge_0 @ 0x15e3760] No channel layout for input 1
[Parsed_amerge_0 @ 0x15e3760] Input channel layouts overlap: output layout will be determined by the number of distinct input channels
Output #0, mp3, to '/var/www/temp/combined.mp3':
  Metadata:
    TSSE            : Lavf56.15.102
    Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p (default)
    Metadata:
      encoder         : Lavc56.13.100 libmp3lame
Stream mapping:
  Stream #0:0 (mp3) -> amerge:in0
  Stream #1:0 (mp3) -> amerge:in1
  amerge -> Stream #0:0 (libmp3lame)
Press [q] to stop, [?] for help
[libmp3lame @ 0x1601000] Trying to remove 1152 samples, but the queue is empty
size=    2001kB time=00:02:08.88 bitrate= 127.2kbits/s    
video:0kB audio:2001kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.012350%

Of note is these sections (I believe).

[Parsed_amerge_0 @ 0x15e3760] No channel layout for input 1
[Parsed_amerge_0 @ 0x15e3760] Input channel layouts overlap: output layout will be determined by the number of distinct input channels

and

[libmp3lame @ 0x1601000] Trying to remove 1152 samples, but the queue is empty

As I said the output audio file sounds correct.

The Music and Audio tracks are created with AudioSegment in python from the pydub library. I've used this before with no issues. The code for this is as follows.

sound = AudioSegment.from_mp3(audio)
introSilence = AudioSegment.silent(duration=introLength)
creditsSilence = AudioSegment.silent(duration=creditsLength)
increasedAudio = sound + 12
talking = introSilence + increasedAudio + creditsSilence
talking.export(audioTrack, format="mp3")
mus = AudioSegment.from_mp3(music)
introMusic = mus[ : introLength]
videoMusic = mus[introLength - crossFade : introLength + videoLength + crossFade]
creditsMusic = mus[totalLength - creditsLength : totalLength]
lowerMusic = videoMusic - 6
totalMusic = introMusic.append(lowerMusic, crossfade=crossFade).append(creditsMusic, crossfade=crossFade).fade_out(fadeOut)
totalMusic.export(musicTrack, format="mp3")

Here is the output of ffprobe on the 2 audio files.

for audioTrack

ffprobe version 2.5.10-0ubuntu0.15.04.1 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mp3, from 'temp/audioTrack.mp3':
  Metadata:
    encoder         : Lavf56.15.102
  Duration: 00:02:08.89, start: 0.025057, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : Lavc56.13

and for musicTrack

ffprobe version 2.5.10-0ubuntu0.15.04.1 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mp3, from 'temp/musicTrack.mp3':
  Metadata:
    encoder         : Lavf56.15.102
  Duration: 00:02:08.89, start: 0.025057, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
    Metadata:
      encoder         : Lavc56.13

I can't see any issues with these.

For completeness here is the ffprobe result for the combined audio track.

ffprobe version 2.5.10-0ubuntu0.15.04.1 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version=0ubuntu0.15.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libwavpack --enable-libwebp --enable-libxvid --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libvpx --enable-libx264 --enable-libsoxr --enable-gnutls --enable-openal --enable-libopencv --enable-librtmp --enable-libx265
  libavutil      54. 15.100 / 54. 15.100
  libavcodec     56. 13.100 / 56. 13.100
  libavformat    56. 15.102 / 56. 15.102
  libavdevice    56.  3.100 / 56.  3.100
  libavfilter     5.  2.103 /  5.  2.103
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mp3, from 'temp/combined.mp3':
  Metadata:
    encoder         : Lavf56.15.102
  Duration: 00:02:08.91, start: 0.025057, bitrate: 127 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 127 kb/s
    Metadata:
      encoder         : Lavc56.13

Any help would be much appreciated.

Thanks,

Stu.

Stuart Clarke
  • 395
  • 4
  • 19
  • You haven't shown the ffmpeg output from the first command. Also, your ffmpeg is quite outdated. Try using a more recent version in any case (e.g. a static build from http://ffmpeg.org/download.html). – slhck Sep 17 '17 at 08:54
  • Thanks @slhck, Sorry for the delay I'm in rural Rwanda at the moment with poor internet. The server is however a VPS with a good internet connection. The ffmpeg version is the most up to date from the Ubuntu 15.04 repository and although I could compile it myself I feel this is a bit out of my depth and I'm a bit time restrained at the moment. I've now also included the output from the first command. – Stuart Clarke Sep 19 '17 at 07:39
  • When I run the first command with a different audio file it works, but I understand there may be some information in the output that is of use. – Stuart Clarke Sep 19 '17 at 07:41
  • 1
    No need to compile, just download the latest static build (`ffmpeg-git-64bit-static.tar.xz`) from https://www.johnvansickle.com/ffmpeg/ and extract it to `/usr/local/bin/ffmpeg`. So using a different `combined.mp3` works fine? – slhck Sep 19 '17 at 07:45
  • Ok, I'll give the upgrade a go. Yes, using another mp3 works fine so I'm pretty sure it has to do with the creation of the mp3. For some reason when I download and open the files on my mac, the media player says the audio is over 5 minutes, when in fact its only just over 2 minutes. When I create the music and talking files separately I also get 5 minute files, so I think there is something wrong with my mp3 creation, maybe the ffmpeg upgrade will fix this. I'll let you know. – Stuart Clarke Sep 19 '17 at 15:40
  • I'm now using the latest version of ffmpeg as provided at the above link but still the same result. I've changed all my audio files to wav to rule out any issues with mp3 codec but still the same problem. I've downloaded the two files to my Mac and tried the same command and again no audio. http://http://tpt.gho.st/ has links to the two files for download if you'd like to try it out or see what the files might look like and why they're not behaving. I'm out of ideas. Thanks. – Stuart Clarke Sep 20 '17 at 08:38
  • Ah, I didn't see the wood for the trees, see my answer below. – slhck Sep 20 '17 at 12:03
  • I think I also gave you a bum steer by saying that the command worked with a different audio file, I'm not sure what I was doing to have that work but I can't replicate it so maybe used a different video file. Anyway, this has fixed the issue. Thanks. – Stuart Clarke Sep 22 '17 at 04:48

1 Answers1

2

You aren't mapping any of your second file's streams to the output. If you look at the stream mapping:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))

You can see that only streams from input file 0 are mapped to the output. You need to explicitly map the audio stream from the second file:

ffmpeg -y -i merged.mp4 -i combined.mp3 -c:a aac -map 0:v -map 1:a output.mp4

Note that there is no need for -strict -2 with recent ffmpeg versions.

Gyan
  • 85,394
  • 9
  • 169
  • 201
slhck
  • 36,575
  • 28
  • 148
  • 201
  • can you help out this: https://stackoverflow.com/questions/71217250/track-and-add-silent-audio-in-video-using-ffmpeg-and-ffprobe-combined-single-com – Kishan Bhatiya Feb 23 '22 at 04:37