我有一个具有以下规格的视频:
- 4320x2160p
- 60 帧/秒
- 20.0 Mb/s 比特率
- AVC 格式 (x264)
由于我的智能手机可以以该分辨率播放高达 30 fps 的视频,因此我需要一种快速的方法将帧速率降低到 30 fps,而不改变任何其他方面(相同的比特率、相同的持续时间)。
有没有办法可以做到这一点而无需重新编码整个视频?
答案1
由于您的智能手机无法播放每秒 60 帧的视频,我最初在智能手机上使用 Avisynth 的建议失败了,因为无论如何都必须解码帧。这意味着除了在计算机上重新编码视频之外,没有其他方法。
现代视频依赖于将视频保存为一系列 I 帧、P 帧和 B 帧。I 帧(在问题评论中也称为关键帧)包含完整图片。P(如“预测”)包含与前一帧相关的差异信息。B 帧是双向的。这是实现所需存储减少的唯一已知方法。您的目标只能通过解码所有帧来实现,即使是那些您想要丢弃的帧,因为这些帧可作为计算其他帧的差异信息的参考。然后必须重新编码该系列。
如果您的问题是关于自录视频,而不是其他已经高度压缩的视频,那么您将需要一台允许您选择仅记录 I 帧格式的相机。这需要增加存储空间。I 帧完全独立于其他帧。从那里开始,您将节省解码处理时间,并将每个第二帧简单地编码为新视频。新视频要么仅包含每个第二 I 帧,计算成本低,要么您可以将源重新编码为 h264 之类的格式。这会花费您的处理时间,但会为最终结果节省存储空间。
你无法逃离你所居住的那个计算时间与存储空间的宇宙。