5月29日 00:25

FFmpeg支持哪些常见的音视频格式?

FFmpeg支持100+容器格式和200+编解码器,需区分容器编码两层。容器层主流格式:MP4(兼容性最广)、MKV(多音轨/字幕)、WebM(Web优化)、MOV(Apple生态)、FLV(直播推流)、TS(HLS切片)。视频编码:H.264/AVC(最通用)、H.265/HEVC(同质量体积减半)、VP9(WebM默认)、AV1(开源下一代,FFmpeg 5.0+支持)。音频编码:AAC(流媒体标配)、Opus(低延迟实时通信最优)、MP3(兼容旧设备)、FLAC(无损)。关键认知:容器决定封装结构,编码决定压缩算法,同一容器可装不同编码(如MP4可装H.264或H.265)。用ffmpeg -encoders查看本地支持的编码器列表。

追问

  • H.264和H.265在FFmpeg中用什么编码器?libx264和h264_nvenc性能差多少?
  • MP4容器能装VP9视频吗?为什么WebM比MP4更适合Web场景?
  • Opus相比AAC在延迟和码率上有什么优势?为什么WebRTC选Opus?
  • FLV容器为什么逐步被淘汰?HLS的TS切片方案解决了FLV的什么问题?
  • ffmpeg -codecsffmpeg -encoders输出有什么区别?

写段代码

bash
# 查看本地支持的所有H.265编码器 ffmpeg -encoders 2>/dev/null | grep 265 # MP4转WebM(VP9+Opus) ffmpeg -i in.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus out.webm
标签:FFmpeg