关于stackoverflow的一些类似的问题,但我无法解决这个问题。
我想获得FFMpeg可以解码的avi编解码器的fourcc
列表。
我知道如何获取所有格式ffmpeg -formats
和编解码器ffmpeg -codecs
,但这两个列表都没有为我提供fourccs
的可访问列表。我也找不到文件。
我需要此列表,以便我的应用可以访问fourcc
文件的avi
,并确定是使用ffmpeg
还是VfW
(或{{1} })尝试解码文件。
是否有一些DirectX
命令可以给我这个列表?
答案 0 :(得分:9)
为了扩展Darren给出的答案(并且因为评论工具不允许这么多文本),这里是从ffmpeg.org上的isom_8c-source文件解析的完整编解码器列表:
raw yuv2 2vuy yuvs L555 L565 B565 24BG
BGRA RGBA ABGR b16g b48r bxbg bxrg bxyv
NO16 DVOO R420 R411 R10k R10g r210 AVUI
AVrp SUDS v210 bxy2 v308 v408 v410 Y41P
yuv4 jpeg mjpa AVDJ AVRn dmb1 mjpb SVQ1
svq1 svqi SVQ3 mp4v DIVX XVID 3IV2 h263
s263 dvcp dvc dvpp dv5p dv5n AVdv AVd1
dvhq dvhp dvh1 dvh2 dvh4 dvh5 dvh6 dvh3
VP31 rpza cvid 8BPS smc rle WRLE qdrw
WRAW avc1 ai5p ai5q ai52 ai53 ai55 ai56
ai1p ai1q ai12 ai13 ai15 ai16 m1v1 mpeg
m1v m2v1 hdv1 hdv2 hdv3 hdv4 hdv5 hdv6
hdv7 hdv8 hdv9 hdva mx5n mx5p mx4n mx4p
mx3n mx3p xd54 xd55 xd59 xd5a xd5b xd5c
xd5d xd5e xd5f xdv1 xdv2 xdv3 xdv4 xdv5
xdv6 xdv7 xdv8 xdv9 xdva xdvb xdvc xdvd
xdve xdvf xdhd xdh2 AVmp mjp2 tga tiff
gif png MNG vc-1 avs2 drac AVdn H263
3IVD AV1x AVup sgi dpx exr apch apcn
答案 1 :(得分:6)
我不知道它是否全面,但源代码似乎包含一个FourCC列表。
查看http://ffmpeg.org/doxygen/trunk/isom_8c-source.html
有很多像这样的行
{ CODEC_ID_AAC, MKTAG('m', 'p', '4', 'a') }
您应该能够下载最新的源代码并编写脚本来挑选它们。
答案 2 :(得分:1)
可以通过avformat api进行映射,而无需深入挖掘源代码。
uint32_t tag = MKTAG('H', '2', '6', '4');
const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 };
enum AVCodecID vcodec = av_codec_get_id(table, tag );
函数avformat_get_riff_video_tags
,avformat_get_riff_audio_tags
和av_codec_get_id
都在“libavformat / avformat.h”中定义。
您还可以使用表格AVOutputFormat.codec_tag
或AVInputFormat.codec_tag