I am trying to use FFMPEG (v.3.3.3) concat demuxer and as the file is stitched the audio drops at concat points. As I have files of same codecs, bitrates and so on - it doesn't make much sense to transcode again, so I really want to make concat demuxer to work.
I've had this problem with h.264 and aac. Here is how to recreate so you can see what I am talking about.
Create test file with bars and tone (10s)
ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=10" -f lavfi -i smptehdbars=size=1920x1080 -t 10 test.mp4
Split the file into two using seeking
ffmpeg -i test.mp4 -ss 0 -t 5 test-1.mp4
ffmpeg -i test.mp4 -ss 5 -t 5 test-2.mp4
Join the files together using concat demuxer
ffmpeg -f concat -safe 0 -i <(for f in ./test-*.mp4; do echo "file '$PWD/$f'"; done) -c copy testconcat.mp4
This creates a file with clearly audible audio drop at 5s mark. To picture this here I've created two spectrograms by extracting audio.
Extract audio
ffmpeg -i test.mp4 test.wav
ffmpeg -i testconcat.mp4 testconcat.wav
Create spectrograms
sox test.wav -n spectrogram -Y 130 -c "Input file" -o test.png
sox testconcat.wav -n spectrogram -Y 130 -c "Concat file" -o testconcat.png
And here is the result:
So my questions are:
- Can concat demuxer be used in such a way to avoid the described problem?
- Or what would you see as a solution (beyond full re-transcode)?