乐闻世界logo
搜索文章和话题

What video formats and codecs does FFmpeg support? How to choose the appropriate format?

2月18日 11:09

FFmpeg supports numerous video formats and codecs. Understanding their characteristics is crucial for choosing the appropriate encoding scheme.

Common Video Container Formats

MP4 (MPEG-4 Part 14)

Features:

  • Excellent compatibility, supported by almost all devices
  • Supports multiple codecs (H.264, H.265, AAC, etc.)
  • Suitable for network transmission and storage

Use Cases: Web video, mobile devices, social media

bash
# Create standard MP4 ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4 # Create fast-start MP4 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -movflags +faststart output.mp4

MKV (Matroska)

Features:

  • Open source format, powerful features
  • Supports almost all codecs
  • Supports multiple audio tracks and subtitle tracks
  • Suitable for storage and collection

Use Cases: HD video storage, multi-language videos

bash
# Create MKV ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mkv # Preserve all tracks ffmpeg -i input.mp4 -c copy output.mkv

AVI (Audio Video Interleave)

Features:

  • Legacy format, good compatibility
  • Relatively simple features
  • Does not support modern codecs

Use Cases: Legacy device compatibility

bash
# Create AVI ffmpeg -i input.mp4 -c:v mpeg4 -c:a mp3 output.avi

WebM

Features:

  • Open source format developed by Google
  • Optimized for web
  • Supports VP8, VP9, AV1 codecs
  • Small file size, good quality

Use Cases: Web video, HTML5 video

bash
# Create WebM ffmpeg -i input.mp4 -c:v libvpx -c:a libvorbis output.webm # Use VP9 encoding ffmpeg -i input.mp4 -c:v libvpx-vp9 -c:a libopus output.webm

MOV

Features:

  • Format developed by Apple
  • Supports professional codecs like ProRes
  • Suitable for professional video production

Use Cases: Professional video production, Apple devices

bash
# Create MOV ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mov # Use ProRes encoding ffmpeg -i input.mp4 -c:v prores_ks -profile:v 3 output.mov

Common Video Codecs

H.264 (AVC)

Features:

  • Most widely used video encoding standard
  • Excellent compatibility
  • Medium compression efficiency
  • Fast encoding speed

Use Cases: General video, web video, mobile devices

bash
# H.264 encoding ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 # High quality H.264 ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow output.mp4 # Fast H.264 ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset ultrafast output.mp4

H.265 (HEVC)

Features:

  • Successor to H.264
  • 50% higher compression efficiency than H.264
  • Slower encoding speed
  • Compatibility is improving

Use Cases: 4K/8K video, high compression requirements

bash
# H.265 encoding ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 # High quality H.265 ffmpeg -i input.mp4 -c:v libx265 -crf 23 -preset slow output.mp4

VP9

Features:

  • Open source codec developed by Google
  • Compression efficiency close to H.265
  • Completely free
  • Suitable for web video

Use Cases: Web video, YouTube

bash
# VP9 encoding ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm # High quality VP9 ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 18 -b:v 0 output.webm

AV1

Features:

  • Next-generation open source codec
  • 30% higher compression efficiency than H.265
  • Slow encoding speed
  • Limited compatibility

Use Cases: Future video, high quality compression

bash
# AV1 encoding ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -strict experimental output.webm

ProRes

Features:

  • Professional codec developed by Apple
  • Visually lossless compression
  • Larger file size
  • Suitable for post-production

Use Cases: Professional video production, post-production

bash
# ProRes encoding ffmpeg -i input.mp4 -c:v prores_ks -profile:v 3 output.mov # ProRes 422 ffmpeg -i input.mp4 -c:v prores_ks -profile:v 1 output.mov

Audio Codecs

AAC

Features:

  • Most widely used audio encoding
  • Excellent compatibility
  • Good quality, small file size
  • Supports multi-channel

Use Cases: General audio, web audio

bash
# AAC encoding ffmpeg -i input.wav -c:a aac -b:a 128k output.aac # High quality AAC ffmpeg -i input.wav -c:a aac -b:a 256k output.aac

MP3

Features:

  • Most popular audio format
  • Excellent compatibility
  • Lossy compression
  • Suitable for music

Use Cases: Music, portable devices

bash
# MP3 encoding ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3 # High quality MP3 ffmpeg -i input.wav -c:a libmp3lame -b:a 320k output.mp3

Opus

Features:

  • Open source audio codec
  • Excellent quality, low latency
  • Suitable for speech and music
  • Small file size

Use Cases: Web audio, voice calls

bash
# Opus encoding ffmpeg -i input.wav -c:a libopus -b:a 128k output.opus # High quality Opus ffmpeg -i input.wav -c:a libopus -b:a 256k output.opus

FLAC

Features:

  • Lossless audio compression
  • Quality same as original file
  • Smaller file than WAV
  • Suitable for music collection

Use Cases: Music collection, lossless audio

bash
# FLAC encoding ffmpeg -i input.wav -c:a flac output.flac

Format Selection Guide

Choose Based on Use Case

ScenarioRecommended FormatRecommended Codec
Web videoMP4H.264 + AAC
HD storageMKVH.265 + AAC
Web videoWebMVP9 + Opus
Professional productionMOVProRes
Music storageFLACFLAC
Mobile devicesMP4H.264 + AAC

Choose Based on Quality Requirements

High Quality:

bash
ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 256k output.mp4

Medium Quality:

bash
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4

Low Quality (Small File):

bash
ffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 96k output.mp4

Format Conversion

Format Interconversion

bash
# MP4 to MKV ffmpeg -i input.mp4 -c copy output.mkv # AVI to MP4 ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4 # WebM to MP4 ffmpeg -i input.webm -c:v libx264 -c:a aac output.mp4

Codec Conversion

bash
# H.264 to H.265 ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 # VP9 to H.264 ffmpeg -i input.webm -c:v libx264 -crf 23 output.mp4

Choosing the appropriate format and codec requires considering multiple factors such as compatibility, quality, file size, and encoding speed.

标签:FFmpeg