Mih*_*ian 20 iphone objective-c avfoundation avplayer
有没有人知道当前项目即将完成播放时是否AVQueuePlayer开始缓冲下一个AVPlayerItem?
我知道文档中没有任何内容可以暗示这一点,我主要询问是否有人观察过这种行为.
Mih*_*ian 21
好的,我再次查看了这个问题并写了一些代码来检查AVQueuePlayer.
jollyCocoa的回答通过建议观察状态属性指向我正确的方向AVPlayerItem.但是文档似乎没有指出这个属性(AVPlayerItemStatusReadyToPlay特别是它的值)可能与缓冲有关.
然而,该AVPlayerItem's loadedTimeRanges属性似乎与缓冲更相关.
在那个数组上做KVO有点棘手 - 数组对象本身不会改变,只有它的项目才会改变 - 所以我每秒都要打印出它的内容.
我发现的是队列的第一个项目中的几秒钟,loadedTimeRanges第二个项目显示一个新CMTimeRange的开始时间0和一些小的持续时间.当前一项继续播放时,持续时间可以增加到60秒左右.
简短的回答: 在播放当前的一个时AVQueuePlayer将缓冲下AVPlayerItem一个.
从iOS 5开始,似乎AVQueuePlayer不再预先缓冲.它确实预先缓冲了iOS 4中的下一首曲目.
我不确定为什么会有变化,或者它甚至是故意考虑Apple的还是仅仅是一个bug.无论如何,这是一个痛苦,我将向他们提交一个关于它的错误.
找到一个工作!!! 经过数小时的搜索和测试失败后,我找到了适用于iOS 5及更高版本的解决方案.
这将播放文件之间没有任何延迟.如果你想在文件之间切换,不是很方便,但肯定会把所有东西都放在一起.在添加AVURLAsset时,仍然可以跟踪每个文件的开始位置,保留CMTime变量,例如:
NSValue *toJumpTo = [NSValue valueWithCMTime:composition.duration];
[array addObject:toJumpTo];
Run Code Online (Sandbox Code Playgroud)
然后只需遍历数组,检查当前时间值并使用CMTimeCompare进行比较.
编辑:发现,__CODE__但正如Stefan Kendall在评论中提到的,它现在是一个垃圾网站.以为我会留下链接以便归因,但不要访问它!
| 归档时间: |
|
| 查看次数: |
11882 次 |
| 最近记录: |