mp4
files cannot be simply concatenated, as the “accepted” answer suggests.
If you run that, and that alone, you’ll end up with output.mp4
having only the contents of file1.mp4
.
That said, what you’re looking to do in the original question can in fact be done, as long as you split original file into mpeg streams correctly.
The following commands will split input.mp4
into 3x 60 second segments, in file[1-3].ts:
avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac \
-bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file1.ts
avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac \
-bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file2.ts
avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac \
-bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file3.ts
You can then put them back together much as the other answer suggests:
avconv -i concat:"file1.ts|file2.ts|file3.ts" -c copy \
-bsf:a aac_adtstoasc -y full.mp4
I used this process to create a scalable, parallel transcoder as described at:
- http://blog.dustinkirkland.com/2014/07/scalable-parallel-video-transcoding-on.html