从 MP4/FLV 中提取帧?
Posted
技术标签:
【中文标题】从 MP4/FLV 中提取帧?【英文标题】:Extracting frames from MP4/FLV? 【发布时间】:2012-01-07 10:26:19 【问题描述】:我知道使用 FFMPEG 是可能的,但是如果我有部分文件(比如没有开头和结尾)该怎么办。是否可以从中提取一些帧?
【问题讨论】:
【参考方案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],除非您想以自定义速率提取帧。
从未尝试过使用裁剪(损坏?)的输入文件。 值得一试。
【讨论】:
我们如何指定提取的 JPG 图片的质量? 感谢 dawg,这已进入我的 mediadrop 插件 (github.com/docdawning/mediadrop-handbrake-bot)。 使用-q:v 2
获得最佳质量 (***.com/questions/10225403/…)
如果磁盘空间充足并且您计划进一步操作帧,请考虑使用YOURIMAGE%4d.bmp
。
你可以通过 'ffprobe -v error -show_format -show_streams input.mp4' [trac.ffmpeg.org/wiki/FFprobeTips] 查看视频的属性,包括帧率【参考方案2】:
这可能非常困难。 MP4 文件格式包括一个“moov”原子,它具有指向音频和视频“样本”的指针。如果您拥有的 mp4 文件片段没有 moov 原子,那么您的工作会复杂得多。您必须开发逻辑来检查“mdat”原子(包含所有音频和视频样本)并使用有根据的猜测来找到音频和视频的边界。
更糟糕的是,如果没有 moov atom,您将没有解码切片所需的 SPS 和 PPS。您必须合成替代品;如果您知道用于创建 MP4 的编解码器,那么您可能能够从类似编码的文件中复制 SPS 和 PPS;如果不是,这可能是一个痛苦的试错过程,因为切片(H.264 编码图片)的语法取决于 SPS 和 PPS 中指定的值。
【讨论】:
虽然您的回答很全面,但实际上使用 FFMPEG 之类的工具提取帧和/或编辑视频非常简单。 Dayne,重新阅读关于源文件缺少开头或结尾的部分问题。以上是关于从 MP4/FLV 中提取帧?的主要内容,如果未能解决你的问题,请参考以下文章