Skip to content

Instantly share code, notes, and snippets.

@FrontierDK
Forked from hsab/ffmpeg_tut_.md
Created February 10, 2021 08:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FrontierDK/83a30c5dc3daf117033e15f35f455244 to your computer and use it in GitHub Desktop.
Save FrontierDK/83a30c5dc3daf117033e15f35f455244 to your computer and use it in GitHub Desktop.
FFMPEG Tutorial: 2-Pass & CRF in x264 & x265

Google FFMPEG H264

Two-Pass: Requires a bitrate. This defines the quality of the video. Youtube and Vimeo usually reduce your bitrate to 25mbs. So if it is higher, it will be compressed by these websites.

Lower bitrate means lower files size.

Calculating Bitrate:

  • (Size in Megabytes * 8192) / Total Length in Seconds = Available bandwith
  • Available bandwith - Audio Bitrate = Video Bitrate

For example:

  • (200 MiB * 8192 [converts MiB to kBit]) / 600 seconds = ~2730 kBit/s total bitrate
  • 2730 - 320 kBit/s (desired audio bitrate) = 2410 kBit/s video bitrate

Procedure:

2 Pass example:

  • Download FFMPEG fro Windows

  • Extract and go to "bin" folder.

  • In "bin" hold Shift+RightClick and select Open PowerShell...

  • For pass 1: .\ffmpeg.exe -thread_queue_size 512 -y -r 24 -i "D:\%04d.png" -i "D:\Max.wav" -c:v libx264 -pix_fmt yuv420p -vprofile high422 -vlevel 4.2 -preset veryslow -b:v 2410k -c:a aac -strict experimental -b:a 320k -pass 1 -f mp4 NULL

  • For pass 2: .\ffmpeg.exe -thread_queue_size 512 -r 24 "D:\%04d.png" -i "D:\Max.wav" -c:v libx264 -pix_fmt yuv420p -vprofile high422 -vlevel 4.2 -preset veryslow -b:v 2410k -c:a aac -strict experimental -b:a 320k -pass 2 "D:\output.mp4"

CRF example:

  • Lossy CRF (1-51): .\ffmpeg.exe -thread_queue_size 512 -r 24 -i "D:\%04d.png" -i "D:\Max.wav" -c:v libx264 -pix_fmt yuv420p -vprofile high422 -vlevel 4.2 -preset veryslow -crf 2 -c:a aac -strict experimental -b:a 320k "D:\crf2_output.mp4"

  • Lossless CRF 0 H264: .\ffmpeg.exe -thread_queue_size 512 -r 24 -i "D:\%04d.png" -i "D:\Max.wav" -c:v libx264 -pix_fmt yuv444p -vprofile high444 -vlevel 5.1 -preset veryslow -crf 0 -c:a aac -strict experimental -b:a 320k "D:\crf0_output.mp4"

  • Lossless CRF 0 H265: .\ffmpeg.exe -thread_queue_size 512 -r 24 -i "D:\%04d.png" -i "D:\Max.wav" -c:v libx265 -preset veryslow -crf 0 -c:a aac -strict experimental -b:a 320k "D:\crf0_output.mp4"

Parameters Explained:

Framerate of Source: -r 24

Source Video: -i "D:\%04d.png" (Image Sequence eg 0001.png)

Source Audio: -i "D:\Max.wav"

Codec Video: -c:v libx264

Pixel Format: -pix_fmt yuv420p

H264 Profile: -vprofile high422

H264 Level: -vlevel 4.2

Compression (Loseless): -preset veryslow

Bitrate Video: -b:v 2410k (Calculated as above)

Pass Number: -pass 1

Codec Audio: -c:a aac

Needed For AAC: -strict experimental

Bitrate Audio: -b:a 320k (Desired audio rate)

Format: -f mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment