【问题标题】:How to live stream a .m3u8 video file in Xamarin.Forms如何在 Xamarin.Forms 中直播 .m3u8 视频文件
【发布时间】:2019-09-18 07:25:56
【问题描述】:

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

这是来自Microsoft's Documentation

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

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

有可能吗? 我有哪些选择?

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

所以我决定使用 Xamarin.Forms Documentation 中给出的视频播放器的自定义渲染器

  • 现在我可以从 url 播放 m3u8 文件了
  • 甚至在 iOS 上播放 http url(之前有 ATS 问题)
  • 但无法播放直播

除了上面链接的文档之外,这是我关注的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();

【问题讨论】:

  • but cannot play livestreams。当您尝试播放现场 m3u8 时会发生什么?
  • 显示“无法播放此视频”的弹出消息

标签: c# xamarin.forms video-streaming live-streaming http-live-streaming


【解决方案1】:

找到解决方案:

我通过在我的笔记本电脑上生成直播流来获取视频 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:

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

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

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多