使用 ffmpeg 库时有没有直接的方法可以确定文件是图像还是视频?
我知道我可以从 AVCodecContext ( https://www.ffmpeg.org/doxygen/trunk/structAVCodecContext.html ) 获取 codec_id,但枚举位于 https://www.ffmpeg.org/doxygen/trunk/group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce
确实很大,而且似乎无法分类..
最佳答案
好吧,在调查 ffprobe 来源后,我似乎发现了一些有帮助的东西(不确定它是否 100% 可靠)
AVFormatContext->iformat->name
但是有类似的问题..有很多未分类的可能性。除了在图像的情况下返回“image2”/“gif”/“ico”之外。可以出现更多图像格式,所有支持的图像格式都列于 http://www.ffmpeg.org/general.html#Image-Formats
如果它不是图像,则需要分析所有流并检测其中的视频流(以了解它是视频而不是音频或字幕文件)。基本上检查:
AVFormatContext->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO
仍然需要先检查 iformat->name,因为流检查对于图像和视频都会返回 AVMEDIA_TYPE_VIDEO。
关于c - 使用 ffmpeg 判断文件是视频还是图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24000138/