我编写软件C / C ++来恢复已删除的文件,我需要根据文件的二进制内容来识别文件,所以我的问题是有一个简单的方法可以知道特定文件是否是H.264格式的视频? H.264有签名吗?
我看到了FFMPEG here的代码,但它可以帮到我,怎么样?
答案 0 :(得分:3)
问题在于H.264不是文件格式,它是视频压缩标准,因此它可以在多种文件格式中找到。您可以使用H.264编码.f4v,尽可能使用H.264编码.mp4。
那么,你如何解决你的问题?好吧,我强烈建议你使用一个为你做这个的库。例如,libavformat应该可以解决问题(检查AVStream
和AVFormatContext
结构以及avformat_open_input
函数)。
现在,如果您绝对不想使用库,可以查看支持H.264的each video container format文档,了解如何检索视频流的编码信息,但希望这样做你至少一两个月。
答案 1 :(得分:1)
如果你想使用FFmpeg - avformat_find_stream_info()
应该帮助你。 there就是一个例子。
答案 2 :(得分:0)
对于遇到此问题但正在寻找cli解决方案的人,您可以使用ffprobe
:
ffprobe -loglevel error -select_streams v -show_entries stream=codec_name -of default=nw=1:nk=1 input.mkv
输出:
h264