ios - AVPlayer 在缓冲区已满并重新开始时停止播放
<p><p>我有一个 Collection View ,其中有一个 <code>AVPlayer</code> 在单元格内,并且 <code>AVPlayer</code> 开始循环播放 <code>AVPlayerItem</code> </p>
<pre><code>-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
</code></pre>
<p>被调用。这很好用,但问题是在 <code>AVPlayer</code> 播放该项目几次后,视频不再显示,但我能听到它的声音。
我还为像这样播放的每个项目添加了值 <code>@"playbackBufferFull"</code> 的观察者:</p>
<pre><code>;
</code></pre>
<p>我注意到当视频停止时,值 <code>@"playbackBufferFull"</code> 的观察者方法被调用,首先我想知道是什么导致缓冲区变满,第二个也是最重要的重要的是如何在视频停止时恢复 <code>AVPlayer</code> ;
我尝试调用 <code>;</code> 并用新项目替换该项目,但它不起作用,观察者方法:</p>
<pre><code>- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (] && )
{
//this method is get called when the video stop showing but i can still hear it
//how can i resume the video?
}
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我的解决方案是:</p>
<p>首先在 <code>viewDidLoad</code> 中为 <code>AVPlayerItemPlaybackStalledNotification</code> 添加观察或 ...</p>
<pre><code>[ addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemPlaybackStalledNotification
object:self.avPlayer.currentItem];
-(void)playerItemDidReachEnd:(NSNotification*)noti
{
//thisisn't good way but i can't find the best way for detect best place for resume again.
NSLog(@"\n\n give Error while Streaminggggg");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
;
});
}
</code></pre>
<p><strong>但是</strong>
也许您可以找到再次调用 play 方法进行恢复的最佳方法!
请检查您是否获得 <code>AVPlayerStatusReadyToPlay</code>key 补丁?
如果你得到 ,你可以在那里调用 <code>play</code> 方法。
请通知我结果</p></p>
<p style="font-size: 20px;">关于ios - AVPlayer 在缓冲区已满并重新开始时停止播放,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/34845057/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/34845057/
</a>
</p>
页:
[1]