【问题标题】:Extracting frames from MP4/FLV?从 MP4/FLV 中提取帧?
【发布时间】:2012-01-07 10:26:19
【问题描述】:

我知道使用 FFMPEG 是可能的,但是如果我有部分文件(比如没有开头和结尾)该怎么办。是否可以从中提取一些帧?

【问题讨论】:

    标签: ffmpeg flv mp4 video-encoding mpeg-4


    【解决方案1】:

    命令

    ffmpeg -ss 00:00:25 -t 00:00:00.04 -i YOURMOVIE.MP4 -r 25.0 YOURIMAGE%4d.jpg
    

    将提取帧

    • 从 25 秒开始 [-ss 00:00:25]
    • 0.04 秒后停止 [-t 00:00:00.04]
    • 从输入文件 YOURMOVIE.MP4 中读取
    • 仅使用每秒 25.0 帧,即。 e.每 1/25 秒一帧 [-r 25.0]
    • 作为名称为 YOURIMAGE%04d.jpg 的 JPEG 图像,其中 %4d 是带前导零的 4 位自动增量数字

    在应用选项 [-r] 之前检查电影的帧速率,同样适用于 [-t],除非您想以自定义速率提取帧。

    从未尝试过使用裁剪(损坏?)的输入文件。 值得一试。

    【讨论】:

    【解决方案2】:

    这可能非常困难。 MP4 文件格式包括一个“moov”原子,它具有指向音频和视频“样本”的指针。如果您拥有的 mp4 文件片段没有 moov 原子,那么您的工作会复杂得多。您必须开发逻辑来检查“mdat”原子(包含所有音频和视频样本)并使用有根据的猜测来找到音频和视频的边界。

    更糟糕的是,如果没有 moov atom,您将没有解码切片所需的 SPS 和 PPS。您必须合成替代品;如果您知道用于创建 MP4 的编解码器,那么您可能能够从类似编码的文件中复制 SPS 和 PPS;如果不是,这可能是一个痛苦的试错过程,因为切片(H.264 编码图片)的语法取决于 SPS 和 PPS 中指定的值。

    【讨论】:

    • 虽然您的回答很全面,但实际上使用 FFMPEG 之类的工具提取帧和/或编辑视频非常简单。
    • Dayne,重新阅读关于源文件缺少开头或结尾的部分问题。
    猜你喜欢
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2013-10-18
    • 2010-11-06
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多