Skip to content

Instantly share code, notes, and snippets.

@dlinsley
Last active February 9, 2024 20:12
Show Gist options
  • Save dlinsley/76ab6cc8911a412bbfe0c977e7a1822c to your computer and use it in GitHub Desktop.
Save dlinsley/76ab6cc8911a412bbfe0c977e7a1822c to your computer and use it in GitHub Desktop.
ffmpeg commands I've used more than once

Simple timelapse from video:

  • A png for every every 4th frame:

    ffmpeg -i input_vid.mp4 -r 0.25 folder/video%06d.png

  • Folder of png file to .mp4:

    ffmpeg -f image2 -i folder/video%06d.png -pix_fmt yuv420p output_vid.mp4

Convert .mkv to .mp4:

ffmpeg -i input_vid.mkv -codec copy output_vid.mp4

Add empty audio track:

ffmpeg -f lavfi -i anullsrc -i no_audio_track.mp4 -shortest -c:v copy -c:a aac with_empty_audio_track.mp4

Remove audio track:

ffmpeg -i input_vid.mp4 -vcodec copy -an with_no_audio_track.mp4

Remove video track:

ffmpeg -i input_vid.mp4 -acodec copy -vn with_no_video_track.m4a

Time trim track from minute 1 to minute 2:

ffmpeg -ss 00:01:00 -i input.mp4 -to 00:02:00 -c copy output.mp4

Time trim track from minute 1 to end:

ffmpeg -ss 00:01:00 -i input.mp4 -c copy output.mp4

Recompress video with different constant rate factor:

Higher crf = lower bitrate

ffmpeg -i input.mp4 -c:v libx264 -cfr 24 -pix_fmt yuv420p -c:a copy output.mp4 software only

ffmpeg -i input.mp4 -c:v h264_nvenc -crf 24 -pix_fmt yuv420p -c:a copy output.mp4 with nvidia offload

ffmpeg -i input.mp4 -c:v h264_qsv -crf 24 -pix_fmt yuv420p -c:a copy output.mp4 with intel quicksync offload

Other great ffmpeg notes / cheatsheets:

https://gist.github.com/steven2358/ba153c642fe2bb1e47485962df07c730

https://gist.github.com/nickkraakman/e351f3c917ab1991b7c9339e10578049

#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: mklapse10x.sh <video_file>"
exit 1
fi
TMPDIR=$(mktemp -d)
ffmpeg -i "$1" -r 0.1 "$TMPDIR/video%06d.png"
ffmpeg -f image2 -i "$TMPDIR/video%06d.png" -pix_fmt yuv420p "$1-lapse10x.mp4"
rm -r "$TMPDIR"
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: mklapse4x <video_file>"
exit 1
fi
TMPDIR=$(mktemp -d)
ffmpeg -i "$1" -r 0.25 "$TMPDIR/video%06d.png"
ffmpeg -f image2 -i "$TMPDIR/video%06d.png" -pix_fmt yuv420p "$1-lapse4x.mp4"
rm -r "$TMPDIR"
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: tomp4.sh <video_file>"
exit 1
fi
ffmpeg -i "$1" -codec copy "$1.mp4"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment