在stackoverflow上有几个类似的问题,但我还没能解决这个确切的问题。
我想得到FFMpeg可以解码的avi编解码器的fourcc列表。
我知道如何获得所有格式的ffmpeg -formats和编解码器ffmpeg -codecs,但这两个列表都没有给我一个可访问的fourccs列表。我能找到的文档也不是。
我需要这个列表,这样我的应用程序就可以访问avi文件的fourcc,并确定是使用ffmpeg还是VfW (或DirectX)来尝试解码该文件。
有没有什么ffmpeg命令可以给我这个列表?
发布于 2012-03-23 00:25:16
我不知道它是否全面,但源代码似乎包含了一个FourCC列表。
看看http://ffmpeg.org/doxygen/trunk/isom_8c-source.html
有很多像这样的行
{ CODEC_ID_AAC, MKTAG('m', 'p', '4', 'a') }您应该能够下载最新的源代码,并编写一个脚本来挑选它们。
发布于 2012-08-29 03:01:14
为了扩展达伦上面给出的答案(因为注释工具不允许这么多文本),下面是从ffmpeg.org上的isom_8c源文件解析的编解码器的完整列表:
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发布于 2013-12-05 22:35:59
可以通过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.h”中定义。
还可以使用表AVOutputFormat.codec_tag或AVInputFormat.codec_tag获取特定格式的映射
https://stackoverflow.com/questions/8727992
复制相似问题