如果打开命令提示符并运行ffmpeg -codecs
,
您将获得一长串FFMPEG支持的编解码器。
这是一个列表的小样本:
DEV.L. h261 H.261
DEV.L. h263 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
D.V.L. h263i Intel H.263
DEV.L. h263p H.263+ / H.263-1998 / H.263 version 2
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb)
D.V.LS hevc H.265 / HEVC
现在,如果您简单地浏览整个列表,
您会看到该列表中的大多数编解码器都显示了它们的名称和描述,<br]但有些编解码器也在描述中包含圆括号,在圆括号中,>
它们指定"encoders:"或"decoders:"。
例如:
1(
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (encoders: libx264 libx264rgb)
2(
DEVILS jpeg2000 JPEG 2000 (decoders: jpeg2000 libopenjpeg) (encoders: jpeg2000 libopenjpeg)
3(
DEV.L. msmpeg4v3 MPEG-4 part 2 Microsoft variant version 3 (decoders: msmpeg4) (encoders: msmpeg4)
4(
DEA.L. aac AAC (Advanced Audio Coding) (encoders: aac libvo_aacenc)
5(
DEA.L. amr_nb AMR-NB (Adaptive Multi-Rate NarrowBand) (decoders: amrnb libopencore_amrnb) (encoders: libopencore_amrnb)
DEA.L. amr_wb AMR-WB (Adaptive Multi-Rate WideBand) (decoders: amrwb libopencore_amrwb) (encoders: libvo_amrwbenc)
我的问题:
为什么有些编解码器有这些括号,指定编码器/解码器,而其他(事实上:大多数(编解码器没有这些括号?
编解码器是一种格式标准。它是以压缩格式描述媒体的一种方式。一种获取未压缩媒体文件或流并将其压缩为标准的工具是编码器。可以有不同的竞争编码器来实现相同的编解码器。例如,libx264是一个基于软件的h264编码器。但许多nvidia GPU附带NVENC,这是一种硬件加速的h.264编码器。他们都做同样的工作,但方式不同。Ffmpeg支持两者。
相关源代码有以下注释,
/* print decoders/encoders when there's more than one or their
* names are different from codec name */
不言自明。