#!/bin/bash # usage : # ./reunite.sh video-name.part1.mp4 filename=$(basename -- "$1") extension="${filename##*.}" filename=$(echo "${filename%.*}" | sed -r 's/(.+)\.part[0-4]{1}$/\1/g') # Extract audio track from one of the parts ffmpeg -i $1 -acodec copy $filename.aac # Let's use more explicit names for manipulation mv $filename.part1.$extension even_odd.mp4 mv $filename.part2.$extension even_even.mp4 mv $filename.part3.$extension odd_odd.mp4 mv $filename.part4.$extension odd_even.mp4 # Rotate the 4 sub-videos clockwise in order to merge them ffmpeg -i even_odd.mp4 -vf "transpose=1" even_90cw_odd.mp4 ffmpeg -i even_even.mp4 -vf "transpose=1" even_90cw_even.mp4 ffmpeg -i odd_odd.mp4 -vf "transpose=1" odd_90cw_odd.mp4 ffmpeg -i odd_even.mp4 -vf "transpose=1" odd_90cw_even.mp4 # Merge the 4 sub-videos into 2 ffmpeg -i even_90cw_odd.mp4 -i even_90cw_even.mp4 -filter_complex "[0][1]vstack,il=l=i:c=i" even_90cw.mp4 ffmpeg -i odd_90cw_odd.mp4 -i odd_90cw_even.mp4 -filter_complex "[0][1]vstack,il=l=i:c=i" odd_90cw.mp4 # Rotate the 2 videos back counter-clockwise ffmpeg -i odd_90cw.mp4 -vf "transpose=2" odd.mp4 ffmpeg -i even_90cw.mp4 -vf "transpose=2" even.mp4 # Merge the 2 videos ffmpeg -i odd.mp4 -i even.mp4 -filter_complex "[0][1]vstack,il=l=i:c=i" $filename.merged_no_sound.mp4 # Merge video with audio track ffmpeg -i $filename.aac -i $filename.merged_no_sound.mp4 $filename.merged.mp4 # Remove manipulation files rm even_odd.mp4 even_even.mp4 odd_odd.mp4 odd_even.mp4 even_90cw_odd.mp4 even_90cw_even.mp4 odd_90cw_odd.mp4 odd_90cw_even.mp4 even_90cw.mp4 odd_90cw.mp4 odd.mp4 even.mp4 $filename.merged_no_sound.mp4 $filename.aac