【发布时间】:2016-02-27 05:24:47
【问题描述】:
我正在使用 XCDYouTubeKit,它是 MPMoviePlayerViewController 的子类。
我在播放播放列表中的下一个视频时遇到问题。当我点击前进按钮时,播放器的状态已停止,不知道如何恢复?
这是我的代码:
override func viewDidLoad()
{
super.viewDidLoad()
youtubeVideoPlayer = XCDYouTubeVideoPlayerViewController(videoIdentifier: videoID)
self.view.addSubview( (youtubeVideoPlayer?.view)! )
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "moviePlayerNowPlayingMovieDidChange:",
name: MPMoviePlayerNowPlayingMovieDidChangeNotification,
object: youtubeVideoPlayer?.moviePlayer)
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "moviePlayerLoadStateDidChange:",
name: MPMoviePlayerLoadStateDidChangeNotification,
object: youtubeVideoPlayer?.moviePlayer)
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "moviePlayerPlaybackDidChange:",
name: MPMoviePlayerPlaybackStateDidChangeNotification,
object: youtubeVideoPlayer?.moviePlayer)
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "moviePlayerPlayBackDidFinish:",
name: MPMoviePlayerPlaybackDidFinishNotification,
object: youtubeVideoPlayer?.moviePlayer)
}
func moviePlayerPlayBackDidFinish(notification: NSNotification)
{
print("moviePlayerPlayBackDidFinish")
youtubeVideoPlayer!.view.removeFromSuperview()
self.dismissViewControllerAnimated(true, completion: nil);
}
func moviePlayerNowPlayingMovieDidChange(notification: NSNotification)
{
print("moviePlayerNowPlayingMovieDidChange")
}
func moviePlayerLoadStateDidChange(notification: NSNotification)
{
print("moviePlayerLoadStateDidChange")
youtubeVideoPlayer?.moviePlayer.play()
let state: MPMoviePlaybackState = (youtubeVideoPlayer?.moviePlayer.playbackState)!
switch state
{
case MPMoviePlaybackState.Stopped:
print("stopped")
break
case MPMoviePlaybackState.Interrupted:
print("interrupted")
break
case MPMoviePlaybackState.SeekingForward:
print("forward")
break
case MPMoviePlaybackState.SeekingBackward:
print("backward")
break
case MPMoviePlaybackState.Paused:
print("paused")
break
case MPMoviePlaybackState.Playing:
print("playing")
break
}
}
func moviePlayerPlaybackDidChange(notification: NSNotification)
{
print("moviePlayerPlaybackDidChange")
let state: MPMoviePlaybackState = (youtubeVideoPlayer?.moviePlayer.playbackState)!
switch state
{
case MPMoviePlaybackState.Stopped:
print("stopped")
videoIDIndex = videoIDIndex + 1
playNextVideo()
break
case MPMoviePlaybackState.Interrupted:
print("interrupted")
break
case MPMoviePlaybackState.SeekingForward:
print("forward")
break
case MPMoviePlaybackState.SeekingBackward:
print("backward")
break
case MPMoviePlaybackState.Paused:
print("paused")
break
case MPMoviePlaybackState.Playing:
print("playing")
break
}
}
func playNextVideo()
{
if segueIdentifer == "SegueFromPlaylistVideos"
{
print("Playlist")
NSNotificationCenter.defaultCenter().removeObserver(
self,
name: MPMoviePlayerPlaybackDidFinishNotification,
object: youtubeVideoPlayer?.moviePlayer
)
print("videoIDs_ARRAY = \(videoIDs_ARRAY)")
print("videoIDs_ARRAY[videoIDIndex] = \( (videoIDs_ARRAY[videoIDIndex] as String) )")
youtubeVideoPlayer?.videoIdentifier = videoIDs_ARRAY[videoIDIndex] as String
}
}
播放列表中播放第一个视频时的顺序如下,我点击前进移动到下一个视频:
moviePlayerNowPlayingMovieDidChange
moviePlayerLoadStateDidChange
moviePlayerPlaybackDidChange
玩
玩
moviePlayerLoadStateDidChange
玩
moviePlayerPlaybackDidChange
停止
播放列表
videoIDs_ARRAY = ["NztC0z1JNq0", "uqRBijuCZd8"]
videoIDs_ARRAY[videoIDIndex] = uqRBijuCZd8
moviePlayerLoadStateDidChange
停止
正如你在最后看到的,播放器的状态是stopped。
我不知道如何恢复它,所以它会播放下一个视频。我尝试在moviePlayerLoadStateDidChange 中添加youtubeVideoPlayer?.moviePlayer.play(),但播放器无法继续播放。
对此有什么想法吗?
谢谢
【问题讨论】:
标签: ios swift mpmovieplayercontroller