【问题标题】:encoding a video for looping?为循环编码视频?
【发布时间】:2011-12-11 05:01:10
【问题描述】:

这与Looping a video with AVFoundation AVPlayer 有点相关,但该问题已得到解答。我想要实现的是使用 AVPlayer 进行 无缝 循环。使用 h264 编码的视频* 的循环之间存在明显的卡顿,由于某些原因,随着 iOS 5 的更新,这种卡顿变得更糟。这可能与视频的编码方式而不是 AVPlayer 有关吗?循环由上面链接中所述的 playerItemDidReachEnd 通知触发。

谢谢。

* 这是我们用来编码视频的 ffmpeg 命令,如果有帮助的话:

ffmpeg -i -y -sameq -vcodec libx264 -vpre hq -crf 20 -an

(是的,文件还没有声音,所以 -an 是故意的。)

【问题讨论】:

标签: ios video encoding ffmpeg h.264


【解决方案1】:

如何将参考帧数设置为 1 和/或 b 帧数设置为 0 和/或配置文件设置为基线?

一个合理的解释:

默认情况下,h.264 解码解码所有类型的视频,它必须在视频开头缓冲一些帧。因此,如果您正在循环(如果它正在重置解码器),那么缓冲可能正在进入。您是否在没有重置解码器的情况下循环?读取文件时解码器是否因为eos而被重置?如果是,您能否通过避免读取超出最后一帧并触发 eos 条件来防止这种情况发生?

如果您有更好的控制(虽然不确定),您可以避免它的一种方法是在返回循环时不提供流标头(sps/pps)?

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2013-04-16
    • 2012-12-06
    相关资源
    最近更新 更多