Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Xamarin.Forms中实时播放.m3u8视频文件_C#_Xamarin.forms_Video Streaming_Live Streaming_Http Live Streaming - Fatal编程技术网

C# 如何在Xamarin.Forms中实时播放.m3u8视频文件

C# 如何在Xamarin.Forms中实时播放.m3u8视频文件,c#,xamarin.forms,video-streaming,live-streaming,http-live-streaming,C#,Xamarin.forms,Video Streaming,Live Streaming,Http Live Streaming,(Xamarin.表格新增) 我想在我的Xamarin.Forms应用程序中创建livestream.m3u8视频文件 这是从 “但是视频播放器没有可用的流选项,因为 iOS和Android不支持从流播放视频。” [来自“视频源”标题上方的段落] 可能吗? 我的选择是什么? 这是我第一次需要播放视频,我搜索了一些库并找到了Xamarin.MediaManager,但它在iOS上引发了一个异常(初始化视频播放器时),并且也没有在Android上播放m3u8文件(它正在播放带有https URL的m

(Xamarin.表格新增) 我想在我的Xamarin.Forms应用程序中创建livestream.m3u8视频文件

这是从

“但是视频播放器没有可用的流选项,因为 iOS和Android不支持从流播放视频。”

[来自“视频源”标题上方的段落]

可能吗? 我的选择是什么?

这是我第一次需要播放视频,我搜索了一些库并找到了Xamarin.MediaManager,但它在iOS上引发了一个异常(初始化视频播放器时),并且也没有在Android上播放m3u8文件(它正在播放带有https URL的mp3和mp4文件)

所以我决定使用Xamarin.Forms中给出的videoplayer的自定义渲染器

  • 现在我可以从url播放m3u8文件了
  • 甚至在iOS上播放http URL(以前有ATS问题)
  • 但不能播放实时流
除了上面链接的文档之外,我还遵循了以下步骤

XAML中的视频播放器

        <video:VideoPlayer VerticalOptions="FillAndExpand"
                           HorizontalOptions="FillAndExpand"
                           BackgroundColor="Black"
                           HeightRequest="200"
                           Margin="0,0,0,0"
                           x:Name="FormsVideoPlayer"/>
找到解决方案:

我在笔记本电脑上生成实时流的视频URL。我所使用的服务某种程度上将他们与PC绑定在一起

我不知道如何播放,但视频只能在生成URL的笔记本电脑上播放(在我向应用程序添加UWP项目后发现)

=>>一旦我开始从应用程序本身生成URL,视频就开始工作了

现在,我使用以下代码将CrossMediaManager用于HLS视频:

        if (isHLS)
        {
            var item = await CrossMediaManager.Current.MediaExtractor.CreateMediaItem(URL);

            item.MediaType = MediaManager.Media.MediaType.Hls;
            CrossMediaManager.Current.MediaPlayer.VideoView.ShowControls = false;

            await CrossMediaManager.Current.Play(item);
        }
        else
        {
            await CrossMediaManager.Current.Play(URL);
        }
Xaml:



以防有人面临类似问题,但无法播放livestreams。当您尝试播放实时m3u8时会发生什么情况?将显示一条弹出消息,其中显示“无法播放此视频”
        if (isHLS)
        {
            var item = await CrossMediaManager.Current.MediaExtractor.CreateMediaItem(URL);

            item.MediaType = MediaManager.Media.MediaType.Hls;
            CrossMediaManager.Current.MediaPlayer.VideoView.ShowControls = false;

            await CrossMediaManager.Current.Play(item);
        }
        else
        {
            await CrossMediaManager.Current.Play(URL);
        }
<ContentPage.Content>
    <mm:VideoView VerticalOptions="FillAndExpand"
                  HorizontalOptions="FillAndExpand"
                  BackgroundColor="Black"
                  x:Name="mmVideoView"
                  />
</ContentPage.Content>