AVPlayer
有一个名为rate
的属性,用于控制播放速率。 1.0
是正常速度,而2.0
或5.0
等值应分别以2x和5x播放。
每当我将播放速率值设置为高于1.0
(比如10.0
)时,播放就会非常不稳定,看起来大量的帧会因为播放器无法播放而丢失。跟上。
但是,QuickTime Player中的相同值(使用相同的电影)会为2x, 5x, 10x, 30x and 60x
的速率生成流畅的播放(由QuickTime播放器报告)。
我创建了一个测试OS X应用程序,其中只包含AVPlayerView
和两个用于设置播放速率的按钮。 1.0
的速率按预期工作,但速率10.0
会产生非常不稳定的播放效果。
然而,AVPlayerView
有一个奇怪的怪癖,如果你鼠标点击播放时间线去寻找另一个位置(当它以10x和不稳定的方式播放时),那么{{1}将"修复"播放和电影将以10x平稳播放。只需单击播放时间线即可。
有谁知道如何平稳播放1x以外的费率?它显然不是硬件问题或文件大小问题,因为QuickTime Player和AVPlayerView都可以做到这一点。
尝试
这question表明它可能是一个音频问题(事实上,QuickTime播放器和AVPlayerView在转发时都会将音频静音)但是我所有尝试都要禁用所有音轨,将所有音轨静音或更改音频音调算法似乎没有什么区别。即使没有音频,播放仍然不稳定。
我还尝试停止播放,然后使用新的费率拨打AVPlayerView
,但这也没有任何区别。
QuickTime Player和AVPlayerView正在做什么,可以以10倍,30倍甚至60倍的速度播放流畅的电影?
答案 0 :(得分:0)
这只是一种解决方法。
当播放速率从0.0更改为较大值时,如果这是自上次调用<div class="outer">
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
<div class="inner">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
</div>
</div>
以来播放速率中的第一个从零到非零的转换,则播放流畅(并且音频会自动静音) )。这是第一个这样的过渡是必要的:仅将速率设置为0.0然后设置为所需的速率不起作用。
因此,例如,这将在高速下产生流畅的播放:
AVPlayer.replaceCurrentItem