如何从AVPlayer获得流畅的高速播放?

时间:2015-05-20 10:01:12

标签: macos cocoa avfoundation avplayer appkit

AVPlayer有一个名为rate的属性,用于控制播放速率。 1.0是正常速度,而2.05.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倍的速度播放流畅的电影?

1 个答案:

答案 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