如何在Xamarin iOS下使用AVPlayer循环播放视频? ObjectiveC解决方案建议使用可观察的通知。目前尚不清楚如何使用C#语法或AVPlayer的Xamarin API执行此操作。
您可以在此处查看ObjectiveC问题和答案:Looping a video with AVFoundation AVPlayer?
答案 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));
}