#!/bin/bash # See : # https://stackoverflow.com/questions/49955100/how-do-i-split-a-video-to-2-separate-files-for-odd-and-even-fields-using-ffmpeg # Et : # https://korben.info/ffmpeg-pour-les-nuls.html # Split the 1 video in 2 ffmpeg -i $1 -filter_complex "[0]il=l=d:c=d,split[o][e];[o]crop=iw:ih/2:0:0[odd];[e]crop=iw:ih/2:0:ih/2[even]" -map "[odd]" odd.mp4 -map "[even]" even.mp4 # Rotate the 2 videos clockwise ffmpeg -i odd.mp4 -vf "transpose=1" odd_90cw.mp4 ffmpeg -i even.mp4 -vf "transpose=1" even_90cw.mp4 # Split each of the 2 videos in 2 # We now have 4 videos ffmpeg -i odd_90cw.mp4 -filter_complex "[0]il=l=d:c=d,split[o][e];[o]crop=iw:ih/2:0:0[odd];[e]crop=iw:ih/2:0:ih/2[even]" -map "[odd]" odd_90cw_odd.mp4 -map "[even]" odd_90cw_even.mp4 ffmpeg -i even_90cw.mp4 -filter_complex "[0]il=l=d:c=d,split[o][e];[o]crop=iw:ih/2:0:0[odd];[e]crop=iw:ih/2:0:ih/2[even]" -map "[odd]" even_90cw_odd.mp4 -map "[even]" even_90cw_even.mp4 # Rotate these 4 video back to normal (counter-clockwise) ffmpeg -i even_90cw_odd.mp4 -vf "transpose=2" even_odd.mp4 ffmpeg -i even_90cw_even.mp4 -vf "transpose=2" even_even.mp4 ffmpeg -i odd_90cw_odd.mp4 -vf "transpose=2" odd_odd.mp4 ffmpeg -i odd_90cw_even.mp4 -vf "transpose=2" odd_even.mp4 # Get filename filename=$(basename -- "$1") extension="${filename##*.}" filename="${filename%.*}" # Extract audio from original file ffmpeg -i $1 -acodec copy $filename.aac # Merge audio track into each one of the 4 videos ffmpeg -i $filename.aac -i even_odd.mp4 $filename.part1.$extension ffmpeg -i $filename.aac -i even_even.mp4 $filename.part2.$extension ffmpeg -i $filename.aac -i odd_odd.mp4 $filename.part3.$extension ffmpeg -i $filename.aac -i odd_even.mp4 $filename.part4.$extension # Remove useless files rm odd.mp4 even.mp4 odd_90cw.mp4 even_90cw.mp4 even_90cw_odd.mp4 even_90cw_even.mp4 odd_90cw_odd.mp4 odd_90cw_even.mp4 even_odd.mp4 even_even.mp4 odd_odd.mp4 odd_even.mp4 $filename.aac