如何分析文件,判断文件是否为H.264视频格式?

How can I analyze file and detect if the file is in H.264 video format?

本文关键字:文件 视频 格式 判断 是否      更新时间:2023-10-16

我写软件C/c++来恢复被删除的文件,我需要根据它们的二进制内容来识别文件,所以我的问题是有一种简单的方法来知道一个特定的文件是否是H.264格式的视频?H.264有签名吗?

我在这里看到了FFMPEG的代码,但是它能帮助我吗?

对于那些遇到这个问题但正在寻找cli解决方案的人,您可以使用ffprobe:

ffprobe -loglevel error -select_streams v -show_entries stream=codec_name -of default=nw=1:nk=1 input.mkv

输出:

h264

问题是H.264不是一种文件格式,它是一种视频压缩标准,因此它可以在多种文件格式中找到。你可以用H.264编码。f4v,就像你可以用H.264编码。mp4一样。

那么,你如何解决你的问题呢?好吧,我强烈建议你使用一个库来为你做这些。例如,libavformat应该可以做到这一点(检查AVStreamAVFormatContext结构,以及avformat_open_input函数)。

现在,如果您绝对不想使用库,您可以查看支持H.264的每种视频容器格式的文档,以了解如何检索视频流的编码信息,但预计这将花费您至少一两个月的时间。

如果你想使用FFmpeg - avformat_find_stream_info()应该可以帮助你。这里有一个例子