如何分析文件,判断文件是否为H.264视频格式?
How can I analyze file and detect if the file is in H.264 video format?
我写软件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应该可以做到这一点(检查AVStream
和AVFormatContext
结构,以及avformat_open_input
函数)。
现在,如果您绝对不想使用库,您可以查看支持H.264的每种视频容器格式的文档,以了解如何检索视频流的编码信息,但预计这将花费您至少一两个月的时间。
如果你想使用FFmpeg - avformat_find_stream_info()
应该可以帮助你。这里有一个例子
相关文章:
- 如何在 c++ 中通过 http 发送大型视频文件?
- 媒体基础将音频流添加到视频文件
- 帧提取 使用OpenCV的视频文件开头只有几秒钟
- 使用 OpenCV C++ 每 1 分钟创建新的视频文件
- 如何检查给定文件是否是C++中的有效视频文件?
- 媒体基础获得视频文件的精确帧(样本)计数
- 如何在不重写整个视频文件的情况下仅替换流中的一个数据框架?(ffmpeg)
- 创建可用的H.264视频文件
- 如何避免在 c++ 中使用 libssh scp 命令压缩从远程 ssh 下载的图像、音频和视频文件?
- 如何使用Windows Media Foundation直接将视频文件直接解码为Direct3D11纹理
- 无法从文件中读取视频,而可以从相机读取
- ARtoolkit加载从4k相机索尼捕获的视频文件
- 视频编写器功能不会使用 OpenCV-3.0.0 保存文件
- 读取视频文件"Open CV WARNING: Couldn't read movie file bird.avi"时出现问题
- 将视频文件的帧总数保存到.txt文件中
- 使用OpenCV从文件中更改视频捕获上的fps
- openCV读取.avi文件的视频捕获获取空框架
- 从OpenCV C 中的视频文件中检索每三个帧
- 使用来自视频文件或网络摄像头的 Kinect 面部跟踪
- 从文件OpenCV读取视频