Skip to content

ffmpeg

Comprehensive media conversion, video/audio encoding, filtering, and streaming command reference.

Basic Usage & Inspection

Simple commands for format conversion, stream inspection, and metadata management.

Convert Media File

Converts a media file from one format to another.

Terminal window
ffmpeg -i <input_file> <output_file>
Example
ffmpeg -i input.mov output.mp4

Display Media Metadata

Displays stream details and metadata of a media file.

Terminal window
ffmpeg -i <input_file>
Example
ffmpeg -i input.mp4

Set Title Metadata

Sets the title metadata field in the media container.

Terminal window
ffmpeg -i <input_file> -metadata title="<title>" <output_file>
Example
ffmpeg -i input.mp4 -metadata title="My Title" output.mp4

Set Creation Timestamp

Adds or overrides the creation timestamp in metadata.

Terminal window
ffmpeg -i <input_file> -metadata creation_time="<timestamp>" <output_file>
Example
ffmpeg -i input.mp4 -metadata creation_time="2024-01-01T12:00:00" output.mp4

Trimming and Cutting

Cut or trim sections of media based on time with or without re-encoding.

Lossless Clip Cutting

Cuts a portion of the video losslessly without re-encoding.

Terminal window
ffmpeg -ss <start_time> -to <end_time> -i <input_file> -c copy <output_file>
Example
ffmpeg -ss 00:00:10 -to 00:00:20 -i input.mp4 -c copy output.mp4

Trim and Re-encode Media

Trims part of a video and re-encodes it.

Terminal window
ffmpeg -ss <start_time> -t <duration> -i <input_file> <output_file>
Example
ffmpeg -ss 10 -t 10 -i input.mp4 output.mp4

Video Encoding, Codecs & Compression

Modern video codecs (AV1, HEVC, H.264), bitrate optimization, and size reduction.

Encode Video AV1

Encodes video using the modern, high-efficiency AV1 codec via libsvtav1.

Terminal window
ffmpeg -i <input_file> -c:v libsvtav1 -crf <crf_value> <output_file>
Example
ffmpeg -i input.mp4 -c:v libsvtav1 -crf 30 output.mp4

Encode Video H265 HEVC

Encodes video using H.265 (HEVC) with constant rate factor.

Terminal window
ffmpeg -i <input_file> -c:v libx265 -crf <crf_value> <output_file>
Example
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4

Encode Video H264

Encodes video using standard H.264 codec with constant rate factor.

Terminal window
ffmpeg -i <input_file> -c:v libx264 -crf <crf_value> <output_file>
Example
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

Lower Video Bitrate

Compresses video by setting a specific target bitrate.

Terminal window
ffmpeg -i <input_file> -b:v <bitrate> <output_file>
Example
ffmpeg -i input.mp4 -b:v 1000k output.mp4

Copy All Streams

Copies all media streams directly to a new container without re-encoding.

Terminal window
ffmpeg -i <input_file> -c copy <output_file>
Example
ffmpeg -i input.mkv -c copy output.mp4

Audio Processing & Compression

Comprehensive audio filtering, extraction, track management, and compression commands.

Compress Audio AAC

Compresses audio using AAC codec at a specific bitrate.

Terminal window
ffmpeg -i <input_file> -c:a aac -b:a <bitrate> <output_file>
Example
ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a

Extract Audio Track

Extracts the audio track and saves it as MP3 or high-quality audio.

Terminal window
ffmpeg -i <input_file> -q:a 0 -map a <output_file>
Example
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3

Remove Audio Track

Outputs the video stream without any audio.

Terminal window
ffmpeg -i <input_file> -an <output_file>
Example
ffmpeg -i input.mp4 -an output.mp4

Adjust Audio Volume

Increases or decreases the audio volume level.

Terminal window
ffmpeg -i <input_file> -af "volume=<factor>" <output_file>
Example
ffmpeg -i input.mp4 -af "volume=1.5" output.mp4

Set Stream Language

Specifies the language tag for a particular audio stream.

Terminal window
ffmpeg -i <input_file> -metadata:s:a:0 language=<lang_code> <output_file>
Example
ffmpeg -i input.mp4 -metadata:s:a:0 language=eng output.mp4

Video Filters & Transformations

Apply visual transformations, cropping, rotation, and flipping to video content.

Rotate Clockwise

Rotates the video frame clockwise.

Terminal window
ffmpeg -i <input_file> -vf "transpose=<value>" <output_file>
Example
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4

Flip Vertically

Flips the video upside down vertically.

Terminal window
ffmpeg -vf "vflip" -i <input_file> <output_file>
Example
ffmpeg -vf "vflip" -i input.mp4 output.mp4

Crop Video Frame

Crops a portion of the video with specified dimensions.

Terminal window
ffmpeg -vf "crop=<width>:<height>:<x>:<y>" -i <input_file> <output_file>
Example
ffmpeg -vf "crop=640:360:0:0" -i input.mp4 output.mp4

Images and Thumbnails

Extract frames, generate thumbnails, or convert between image sequences and video.

Extract Single Frame

Captures a single image frame at a specific timestamp.

Terminal window
ffmpeg -ss <time> -i <input_file> -frames:v 1 <output_file>
Example
ffmpeg -ss 00:00:01 -i input.mp4 -frames:v 1 output.jpg

Generate Timed Thumbnails

Creates thumbnail images at regular time intervals.

Terminal window
ffmpeg -i <input_file> -vf fps=<fps_expression> <output_pattern>
Example
ffmpeg -i input.mp4 -vf fps=1/10 thumb_%03d.jpg

Image Sequence to Video

Converts sequentially numbered images into a video file.

Terminal window
ffmpeg -framerate <rate> -i <input_pattern> <output_file>
Example
ffmpeg -framerate 24 -i img_%03d.png output.mp4

Subtitles

Extract, embed, or burn subtitles into video files.

Extract Subtitle Stream

Saves a subtitle stream from an MKV file to an external file.

Terminal window
ffmpeg -i <input_file> -map 0:s:0 <output_subs>
Example
ffmpeg -i input.mkv -map 0:s:0 subs.srt

Burn Subtitles in Video

Renders external subtitles directly into the video frames.

Terminal window
ffmpeg -i <input_file> -vf subtitles=<subs_file> <output_file>
Example
ffmpeg -i input.mp4 -vf subtitles=subs.srt output.mp4

Embed Subtitles Softly

Adds subtitles to a container without burning or rendering them.

Terminal window
ffmpeg -i <input_file> -i <subs_file> -c copy -c:s mov_text <output_file>
Example
ffmpeg -i input.mp4 -i subs.srt -c copy -c:s mov_text output.mp4

Network Streaming & Protocols

Stream, broadcast, or receive media over network endpoints and live protocols.

Stream to RTMP Endpoint

Sends a media stream to a live RTMP broadcast server.

Terminal window
ffmpeg -re -i <input_file> -f flv <rtmp_url>
Example
ffmpeg -re -i input.mp4 -f flv rtmp://server/live/streamkey

Download HLS Stream

Saves a live or recorded HLS stream URL into a local file.

Terminal window
ffmpeg -i <stream_url> -c copy <output_file>
Example
ffmpeg -i https://example.com/playlist.m3u8 -c copy output.ts