Xamarin iOS AVPlayer - 如何使用通知结束循环视频?

时间:2015-04-09 13:55:53

标签: ios xamarin avplayer

如何在Xamarin iOS下使用AVPlayer循环播放视频? ObjectiveC解决方案建议使用可观察的通知。目前尚不清楚如何使用C#语法或AVPlayer的Xamarin API执行此操作。

您可以在此处查看ObjectiveC问题和答案:Looping a video with AVFoundation AVPlayer?

2 个答案:

答案 0 :(得分:5)

对不起,@ Pandalink,一旦我们弄明白,我们应该在这里更新答案......

我们发现了一些非常简单的事情:

NSNotificationCenter.DefaultCenter.AddObserver (AVPlayerItem.DidPlayToEndTimeNotification, (notify) => {
            player.Seek(CoreMedia.CMTime.Zero);
            notify.Dispose ();
        });

答案 1 :(得分:4)

这对我有用:

AVAsset videoAsset;
AVPlayerItem videoPlayerItem;
AVPlayer videoPlayer;
AVPlayerLayer videoPlayerLayer;
NSObject videoEndNotificationToken;

public override void ViewDidLoad()
{
    videoAsset = AVAsset.FromUrl(NSUrl.FromFilename("video.mp4"));
    videoPlayerItem = new AVPlayerItem(videoAsset);
    videoPlayer = new AVPlayer(videoPlayerItem);
    videoPlayerLayer = AVPlayerLayer.FromPlayer(videoPlayer);
    videoPlayerLayer.Frame = View.Frame;
    View.Layer.AddSublayer(videoPlayerLayer);
    videoPlayer.Play();

    // Subscribe to video end notification
    videoPlayer.ActionAtItemEnd = AVPlayerActionAtItemEnd.None;
    videoEndNotificationToken = NSNotificationCenter.DefaultCenter.AddObserver(AVPlayerItem.DidPlayToEndTimeNotification, VideoDidFinishPlaying, videoPlayerItem);
}

private void VideoDidFinishPlaying(NSNotification obj)
{
    Console.WriteLine("Video Finished, will now restart");
    videoPlayer.Seek(new CMTime(0, 1));
}