【问题标题】:How can I analyze file and detect if the file is in H.264 video format? [closed]如何分析文件并检测文件是否为 H.264 视频格式? [关闭]
【发布时间】:2017-02-13 15:54:10
【问题描述】:

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

我看到了FFMPEGhere的代码,但是能帮到我吗,怎么样?

【问题讨论】:

  • ffprobe 可以帮到你。
  • @Shark 如何使用 FFMPEG 我应该使用什么功能?你可以指导我更详细吗?

标签: c++ c video ffmpeg


【解决方案1】:

如果您想使用 FFmpeg - avformat_find_stream_info() 应该可以帮助您。 there 就是一个例子。

【讨论】:

    【解决方案2】:

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

    那么,您如何解决您的问题?好吧,我强烈建议您使用为您执行此操作的库。例如,libavformat 应该可以解决问题(检查 AVStreamAVFormatContext 结构,以及 avformat_open_input 函数)。

    现在,如果您绝对想在没有库的情况下执行此操作,您可以查看支持 H.264 的each video container format 的文档,了解如何检索视频流的编码信息,但希望本文能带您了解至少一两个月。

    【讨论】:

    • 我使用Visual Studio,无法编译libavformat,你知道解决办法吗?
    • 不幸的是,我找不到与 Visual Studio 一起使用的二进制文件,但来自 FFmpeg 的人提出了一个 wiki article 关于使用 Visual Compiler 编译源代码的问题。如果这不起作用,我想您也可以使用另一个库,但不幸的是,我不知道其他任何库。我认为libVLC 最终会做你想做的事,但不要引用我的话。
    【解决方案3】:

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

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

    输出:

    h264
    

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 2018-01-24
      • 2011-09-09
      • 1970-01-01
      • 2013-06-19
      相关资源
      最近更新 更多