Sample Video Editing Workflow using FFmpeg

Link to FFmpeg notes (including FFmpeg install

View specs and play first clip
ffprobe clip1.mov
ffplay clip1.mov
Deinterlace
ffplay -i clip1.mov -vf "bwdif=1"
Crop video to 16:9 Ratio
ffplay -i clip1.mov -vf "bwdif=1,crop=in_w:in_w*9/16"
Center crop and align to top
ffplay -i clip1.mov -vf "bwdif=1,crop=in_w:in_w*9/16:(in_w-out_w)/2:0"
Scale SD video to 720p*
ffplay -i clip1.mov -vf "bwdif=1,crop=in_w:in_w*9/16:(in_w-out_w)/2:0,scale=1280:720" -aspect 16:9

*added “-aspect 16:9” to fix problem with non-square pixels

Pad and scale (This is an alternative to crop and scale)
ffplay -i clip1.mov -vf "bwdif=1,pad=in_h*16/9:in_h:(in_w-out_w)/2,scale=1280:720" -aspect 16:9
Prepare for Concatination

files.txt:
file ‘clip1.mov’
file ‘clip2.mov’
file ‘clip3.mov’

Concat (join) multiple video files
ffplay -f concat -safe 0 -i files.txt -vf "bwdif=1,crop=in_w:in_w*9/16:(in_w-out_w)/2:0,scale=1280:720" -aspect 16:9
Save output as H.264 mp4
ffmpeg -f concat -safe 0 -i files.txt -vf "bwdif=1,crop=in_w:in_w*9/16:(in_w-out_w)/2:0,scale=1280:720"  -aspect 16:9 -pix_fmt yuv420p -ss 00:00:0.0 -t 10 out.mp4
Look at available H.264 encoders
ffmpeg -codecs | grep 264
Save output as H.264 mp4 with hardware encoding (on Mac)

FFmpeg documentation on hardware accelerated encoding

ffmpeg -f concat -safe 0 -i files.txt -vf "bwdif=1,crop=in_w:in_w*9/16:(in_w-out_w)/2:0,scale=1280:720" -aspect 16:9 -pix_fmt yuv420p -vcodec h264_videotoolbox -ss 00:00:0.0 -t 10 out2.mp4
Compare software and hardware encoded files
ffprobe out.mp4
ffprobe out2.mp4
Hardware encoding with higher bitrate
ffmpeg -f concat -safe 0 -i files.txt -vf "bwdif=1,crop=in_w:in_w*9/16:(in_w-out_w)/2:0,scale=1280:720" -aspect 16:9 -pix_fmt yuv420p -vcodec h264_videotoolbox -b:v 5400k -ss 00:00:0.0 -t 10 out.mp4
Speed up video
ffmpeg -f concat -safe 0 -i files.txt -vf "bwdif=1,crop=in_w:in_w<em>9/16:(in_w-out_w)/2:0,scale=1280:720,setpts=1/7</em>PTS" -aspect 16:9 -an -pix_fmt yuv420p -vcodec h264_videotoolbox -b:v 5400k -ss 00:00:0.0 -t 10 out.mp4
Output final video (without audio)
ffmpeg -f concat -safe 0 -i files.txt -vf "bwdif=1,crop=in_w:in_w<em>9/16:(in_w-out_w)/2:0,scale=1280:720,setpts=1/7</em>PTS" -aspect 16:9 -an -pix_fmt yuv420p -vcodec h264_videotoolbox -b:v 5400k final_without_audio.mp4
Merge final video with audio without re-encoding video
ffmpeg -i final_without_audio.mp4 -i Rolling_Hills.mp3 -vcodec copy -acodec aac -b:a 128k -map 0:v:0 -map 1:a:0 final_with_audio.mp4

If you have questions, please leave them in the comments below or in the comments on the video.

Leave a comment

Your email address will not be published. Required fields are marked *