如何在 Xamarin.Forms 中直播 .m3u8 视频文件

How to live stream a .m3u8 video file in Xamarin.Forms

(Xamarin.Forms 的新手) 我想在我的 Xamarin.Forms 应用程序中直播 .m3u8 视频文件?

这是来自Microsoft's Documentation

"No stream option is available for the VideoPlayer however, because iOS and Android do not support playing a video from a stream."

[来自 'Video Sources' 标题正上方的段落]

可能吗? 我有哪些选择?

这是我第一次需要播放视频,我搜索了一些库并找到了 Xamarin.MediaManager 但它在 iOS 上抛出异常(在初始化视频播放器时)并且是也不在 Android 上播放 m3u8 文件(它正在使用 https urls 播放 mp3 和 mp4 文件)

所以我决定使用 Xamarin.Forms Documentation

中给出的视频播放器自定义渲染器

这是 VideoPlayer Demo/Tutorial 除了上面链接的文档之外我还遵循的

XAML

中的视频播放器
        <video:VideoPlayer VerticalOptions="FillAndExpand"
                           HorizontalOptions="FillAndExpand"
                           BackgroundColor="Black"
                           HeightRequest="200"
                           Margin="0,0,0,0"
                           x:Name="FormsVideoPlayer"/>

这就是我设置源的方式

                FormsVideoPlayer.Source = new UriVideoSource
                {
                    Uri = url
                };

                FormsVideoPlayer.Play();

找到解决方案:

我通过在笔记本电脑上生成视频来获取直播视频 URL。我使用的服务以某种方式将它们与 PC 绑定(假设)。

我不知道怎么做,但是视频只能在生成 URL 的笔记本电脑上播放(我在应用程序中添加了一个 UWP 项目后发现了这个)

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

现在我使用 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:

<ContentPage.Content>
    <mm:VideoView VerticalOptions="FillAndExpand"
                  HorizontalOptions="FillAndExpand"
                  BackgroundColor="Black"
                  x:Name="mmVideoView"
                  />
</ContentPage.Content>

以防万一有人遇到类似问题