video - 如何使用 FFMPEG 将视频的第一帧转换为 I 帧,将其余帧转换为 P 帧?

标签 video ffmpeg data-moshing

我想尝试做一些数据移动,比如 this tutorial .但是我希望能够以编程方式完成它,所以我想弄清楚如何使用 ffmpeg 和/或其他命令行工具尽可能多地完成这个过程,而不是 vdub 和 avidemux。

我遇到的第一个问题是当我使用 ffdshow codec rev 3556使用 VDub 它只会输出损坏的视频。我觉得我已经接近 我想要什么,将第 0 帧作为 I 帧,其余所有作为 P 帧,使用以下命令

ffmpeg -i input.mp4 -force_key_frames 00:00:00.000 output.avi

这有几个问题......

1)我也得到了 B 帧,它不适用于那种类型的数据混合

2) 每 10 帧左右仍有 I 帧

我觉得问题是我需要使用某种编解码器来编码视频,而且 -force_key_frames可能只是强制添加额外的关键帧(I 帧),但不会阻止创建其他 I 帧。

最佳答案

尝试使用 -keyint旗帜。我相信您可以发送最小 GOP 长度( key 间隔长度)。

您需要知道文件中有多少帧,并且可以尝试将最小键间隔设置为该长度。

IE = keyint=[KEY INTERVAL VALUE]:min-keyint=[MINIMUM KEY INTERVAL VALUE]

关于video - 如何使用 FFMPEG 将视频的第一帧转换为 I 帧,将其余帧转换为 P 帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30920343/

相关文章:

c - 如何使用 libswresamples 的 swr_convert 将相同的音频转换两次

java - 从 ffmpeg 的标准输出读取的图像有时确实会变得困惑。为什么?

actionscript-3 - 1119 : Access of possibly undefined property SEEKED through a reference with static type Class

video - 如何像 Firefox 页面一样嵌入视频?

android - 视频播放时调用显式 GC 导致帧丢失近 10% 以上

java - 在不知道文件持续时间的情况下分割视频

php - FFMPEG 在打开输出流#0 :0 - maybe incorrect parameters such as bit_rate, 速率、宽度或高度的编码器时无法转码 mp4 错误