Bes*_*esi 19 video cocoa-touch objective-c ios avplayer
这有效:我有一个AVPlayer在加载后立即播放视频.这很好用.
这不是:
我想在一个给定的位置播放它,而不是在开始时播放视频.所以我等到资产准备好使用KVO播放:
BOOL isReadyToSeek = (self.playerItem.status == AVPlayerStatusReadyToPlay)
Run Code Online (Sandbox Code Playgroud)
然后寻求给定的时间
[playerItem seekToTime:timeInTheMiddleOfTheVideo completionHandler:myHandler];
Run Code Online (Sandbox Code Playgroud)
但是玩家将始终在视频开始时进行初始搜索.
更新 我尝试了几秒钟的dispatch_after,但这也不起作用.它在播放后工作,但从不开始.
当我看到self.player.currentItem.duration我不断收到0的value和timescale.
dar*_*s0n 48
有些事情可以帮到你:
当检查玩家是否准备好玩时,我同时检查玩家本身以及玩家的当前项目.
if(self.player.status == AVPlayerStatusReadyToPlay &&
self.player.currentItem.status == AVPlayerItemStatusReadyToPlay) {
[self.player play];
}
Run Code Online (Sandbox Code Playgroud)如果您寻求例如15秒,它可能会从视频的开头开始,而不是如果它是最近的关键帧的位置.要强制玩家寻找确切的位置(注意:这将花费几秒钟的时间),请执行以下操作:
Float64 seconds = 500.0f;
CMTime targetTime = CMTimeMakeWithSeconds(seconds, NSEC_PER_SEC);
[self.player seekToTime:targetTime
toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过将其中一个参数指定为无穷大来明确地在指定点之前/之后搜索关键帧:
[self.player seekToTime:targetTime
toleranceBefore:kCMTimePositiveInfinity toleranceAfter:kCMTimeZero];
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
23171 次 |
| 最近记录: |