2016-09-21 76 views
0

我试图将HLS流分配给MediaElement,然后立即播放它,但我没有这样做。同步运行AdaptiveMediaSource.CreateFromUriAsync

这是一个UWP应用程序(Windows 10)。

Uri hlsUri = new Uri("http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"); 
AdaptiveMediaSourceCreationResult hlsSource = await AdaptiveMediaSource.CreateFromUriAsync(hlsUri); 

if (hlsSource .Status == AdaptiveMediaSourceCreationStatus.Success) 
{ 
    videoPlayer.SetMediaStreamSource(hlsSource .MediaSource); 
    videoPlayer.Play(); 
} 

由于某种原因,这件事情不起作用。 StreamSource已设置,但由于某种原因,Play()在此之前执行。

我试图在Task中包装CreateFromUriAsync方法,如建议的here,先等待结果,但我无法使其工作。

它与await Task.Delay(TimeSpan.FromMilliseconds(400));一起使用,但在我看来就像一个滴答作响的定时炸弹。但是,它让我相信,我的问题在async方法中的某处。

回答

1

如果您想在MediaElement设置后立即开始播放,我建议您将其AutoPlay属性设置为true。这应该工作! :)

+0

嗯,我想这应该工作。在设置媒体源之前执行'Play()'仍然很奇怪。 – Stefan

+1

这是因为'AdaptiveMediaSource'的创建是异步和等待的。另一件事是你可以在一个线程中运行创建,并等待它完成,例如使用'Task.Run()',但我认为它不会' t很有道理 –

+1

@Stefan如果问题已解决您的问题,请将其标记为解决方案:) –