Combine MPEG-DASH segments (ex, init.mp4 + segments.m4s) back to a full source.mp4?

Drake Guan picture Drake Guan · May 6, 2014 · Viewed 30.2k times · Source

GPAC, http://gpac.wp.mines-telecom.fr/, can be used to do video segmentation along with MPEG-DASH spec. One type of results is a combination of init files (ex, init.mp4) and several roughly fixed-duration segments (ex, segment-%d.m4s). What if I just got those results and I like to reverse/combine them back to one full source.mp4 file? Can I use GPAC or ffmpeg for this?

Answer

Daniel picture Daniel · Nov 19, 2014

You can just use the cat command or similar tools to do this job:

cat init.mp4 > source.mp4
cat segment-1.m4s >> source.mp4
cat segment-2.m4s >> source.mp4
...

To do this automatically for all segments in the current folder, the following command can be used:

cat init.mp4 $(ls -vx segment-*.m4s) > source.mp4

The -v parameter for ls sorts the output naturally (i.e. 1, 2, ..., 10, ..., 100), otherwise it sorts lexically (i.e. 1, 10, 100, 2, ...). The -x parameter puts the output on a line instead of columns.