Skip to content

Instantly share code, notes, and snippets.

@JamesJJ
Last active May 12, 2022 18:15
Show Gist options
  • Save JamesJJ/487c12436b1d3756a9c3eff4fbb8d7c3 to your computer and use it in GitHub Desktop.
Save JamesJJ/487c12436b1d3756a9c3eff4fbb8d7c3 to your computer and use it in GitHub Desktop.
FFMpeg commands for various video encoding
# val vrTranscodeMp4Args = AppConfigLib.getConfig[String]("CONTENT_VERIFY_TRANSCODE_MP4_ARGS").getOrElse(
# "-movflags faststart -c:v libx264 -s 1920x1080 -b:v 6M -c:a aac -b:a 128k -loglevel warning -y -nostats")
# val vrTranscodeWebmArgs = AppConfigLib.getConfig[String]("CONTENT_VERIFY_TRANSCODE_WEBM_ARGS").getOrElse(
# "-c:v libvpx -s 1920x1080 -crf 20 -b:v 6M -c:a libvorbis -slices 2 -threads 4 -loglevel warning -y -nostats")
# val mvrTranscodeMp4Args = AppConfigLib.getConfig[String]("CONTENT_VERIFY_TRANSCODE_MVR_MP4_ARGS").getOrElse(
# "-movflags faststart -pix_fmt yuv420p -profile:v main -level 4.1 -c:v libx264 -s 1280x720 -b:v 2M -c:a aac -b:a 128k -loglevel warning -y -nostats")
# val mvrTranscodeWebmArgs = AppConfigLib.getConfig[String]("CONTENT_VERIFY_TRANSCODE_MVR_WEBM_ARGS").getOrElse(
# "-c:v libvpx -s 1280x720 -crf 20 -b:v 4M -c:a libvorbis -slices 2 -threads 4 -loglevel warning -y -nostats")
#### ABOVE FROM CONTENT_VERIFY 2020/01
## ---------------------------------------------
#### BELOW FROM BEFORE (2018?)
cd /tmp
echo;echo;echo '== h264 1100'
ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 1100k -pass 1 -c:a aac -b:a 128k -f mp4 /dev/null && \
ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 1100k -pass 2 -c:a aac -b:a 128k "$1--h264-1100.mp4"
echo;echo;echo '== h264 1600'
ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 1600k -pass 1 -c:a aac -b:a 128k -f mp4 /dev/null && \
ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 1600k -pass 2 -c:a aac -b:a 128k "$1--h264-1600.mp4"
echo;echo;echo '== h264 2200'
ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 2200k -pass 1 -c:a aac -b:a 128k -f mp4 /dev/null && \
ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 2200k -pass 2 -c:a aac -b:a 128k "$1--h264-2200.mp4"
echo;echo;echo '== h264 3600'
ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 3600k -pass 1 -c:a aac -b:a 128k -f mp4 /dev/null && \
ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx264 -b:v 3600k -pass 2 -c:a aac -b:a 128k "$1--h264-3600.mp4"
#echo;echo;echo '== h265 1100'
#ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 1100k -x265-params pass=1 -c:a aac -b:a 128k -f mp4 /dev/null && \
#ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 1100k -x265-params pass=2 -c:a aac -b:a 128k "$1--h265-1100.mp4"
#
#echo;echo;echo '== h265 1600'
#ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 1600k -x265-params pass=1 -c:a aac -b:a 128k -f mp4 /dev/null && \
#ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 1600k -x265-params pass=2 -c:a aac -b:a 128k "$1--h265-1600.mp4"
#
#echo;echo;echo '== h265 2200'
#ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 2200k -x265-params pass=1 -c:a aac -b:a 128k -f mp4 /dev/null && \
#ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 2200k -x265-params pass=2 -c:a aac -b:a 128k "$1--h265-2200.mp4"
#
#echo;echo;echo '== h265 3600'
#ffmpeg -y -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 3600k -x265-params pass=1 -c:a aac -b:a 128k -f mp4 /dev/null && \
#ffmpeg -i "$1" -movflags faststart -pix_fmt yuv420p -c:v libx265 -b:v 3600k -x265-params pass=2 -c:a aac -b:a 128k "$1--h265-2200.mp4"
#echo;echo;echo '== webm 1600avg'
#ffmpeg -i "$1" -c:v libvpx-vp9 -minrate 600k -b:v 1100k -maxrate 1400k "$1--webm-11avg.webm"
#
#echo;echo;echo '== webm 1600avg'
#ffmpeg -i "$1" -c:v libvpx-vp9 -minrate 1000k -b:v 1600k -maxrate 2000k "$1--webm-16avg.webm"
#
#ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 1600k -pass 1 -speed 4 -c:a libopus -f webm /dev/null && \
#ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 1600k -pass 2 -speed 1 -c:a libopus "$1--webm-1600.webm"
#
#ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 2200k -pass 1 -speed 4 -c:a libopus -f webm /dev/null && \
#ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 2200k -pass 2 -speed 1 -c:a libopus "$1--webm-2200.webm"
#
#ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 3600k -pass 1 -speed 4 -c:a libopus -f webm /dev/null && \
#ffmpeg -y -i "$1" -c:v libvpx-vp9 -b:v 3600k -pass 2 -speed 1 -c:a libopus "$1--webm-3600.webm"
@JamesJJ
Copy link
Author

JamesJJ commented Dec 28, 2017

  • H264 is good as above.

  • VP9 is very slow to encode (0.002 x) ... could drop to VP8 instead ...

  • H265 using the above commands doesn't work well in Quicktime/VLC (maybe need to check if pix_fmt yuv420p should be removed for H265)

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