我知道使用 FFMPEG 是可能的,但是如果我有部分文件(比如没有开头和结尾)该怎么办。是否可以从中提取一些帧?
问问题
47954 次
2 回答
90
命令
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 帧,即每 1/25 秒一帧 [-r 25.0]
- 作为名称为 YOURIMAGE%04d.jpg 的 JPEG 图像,其中 %4d 是带有前导零的 4 位自动增量数字
在应用选项 [-r] 之前检查电影的帧速率,同样适用于 [-t],除非您想以自定义速率提取帧。
不过,从未尝试过使用裁剪(损坏?)的输入文件。值得一试。
于 2011-12-15T17:42:48.850 回答
2
这可能非常困难。MP4 文件格式包括一个“moov”原子,它具有指向音频和视频“样本”的指针。如果您拥有的 mp4 文件片段没有 moov 原子,那么您的工作会复杂得多。您必须开发逻辑来检查“mdat”原子(包含所有音频和视频样本)并使用有根据的猜测来找到音频和视频的边界。
更糟糕的是,没有 moov atom,您将没有解码切片所需的 SPS 和 PPS。您必须合成替代品;如果您知道用于创建 MP4 的编解码器,那么您可能能够从类似编码的文件中复制 SPS 和 PPS;如果不是,这可能是一个痛苦的试错过程,因为切片(H.264 编码图片)的语法取决于 SPS 和 PPS 中指定的值。
于 2011-12-19T20:42:47.420 回答