Use ffmpeg -i in.mp4 -vf yadif,format=yuv420p -force_key_frames "expr:gte(t,n_forced/2)" -c:v libx264 -crf 18 -bf 2 -c:a aac -q:a 1 -ac 2 -ar 48000 -use_editlist 0 -movflags +faststart out.mp4 `-vf` specifies video filters `yadif` will deinterlace videos if they're interlaced. `format=yuv420p` will produce pixel format with 4:2:0 chroma subsampling. `-force_key_frames "expr:gte(t,n_forced/2)"` will place keyframes every half-second, so that will be the GOP size. `-c:v libx264` will use the x264 encoder to produce a H264 video stream. `-crf 18` will produce a visually lossless file. Better than setting a bitrate manually. `-bf 2` will limit consecutive B-frames to 2 `-c:a aac` will use the native encoder to produce an AAC audio stream. `-q:a 1` sets the highest quality for the audio. Better than setting a bitrate manually. `-ac 2` rematrixes audio to stereo. `-ar 48000` resamples audio to 48000 Hz. `-use_editlist 0` avoids writing edit lists. `-movflags +faststart` places moov atom/box at front of the output file.