c - 使用 ffmpeg 判断文件是视频还是图像

标签 c image video ffmpeg

使用 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/

相关文章:

C - 使用 select() 创建 UTP 服务器/客户端聊天室

c - 用于 wandboard 的 c GPIO 编程

c - 带有 typedef 的结构并声明一个函数

c# - 是否有适用于 Adob​​e Photoshop/Illustrator/InDesign 的 .NET SDK?

html - 使图像适合宽度

python-3.x - 如何使用cv2使用python3提高图像回放的速度

c - 合并两个链表后无限循环

css - 是否有任何程序可以将多个图像合并为一个以用于 CSS 并减少往返次数?

javascript - Video.js this.tech 未定义 firefox

android - 视频录制 - 无法启动相机预览