簡體   English   中英

如何在 Xamarin.Forms 中直播 a.m3u8 視頻文件

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

(Xamarin.Forms 的新手)我想在我的 Xamarin.Forms 應用程序中直播.m3u8 視頻文件嗎?

這是來自微軟的文檔

“但是,VideoPlayer 沒有可用的流選項,因為 iOS 和 Android 不支持從流中播放視頻。”

[來自“視頻源”標題正上方的段落]

可能嗎? 我有哪些選擇?

這是我第一次需要播放視頻,我搜索了一些庫並找到了 Xamarin.MediaManager 但它在 iOS 上拋出異常(在初始化視頻播放器時)並且在 Android 上也沒有播放 m3u8 文件(它正在播放帶有 https url 的 mp3 和 mp4 文件)

所以我決定使用 Xamarin.Forms 文檔中給出的視頻播放器自定義渲染器

  • 現在我可以從 url 播放 m3u8 文件
  • 甚至在 iOS 上播放 http url(之前有 ATS 問題)
  • 但無法播放直播

除了上面鏈接的文檔之外,這是我遵循的VideoPlayer 演示/教程

XAML 中的 VideoPlayer

        <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 項目后發現)

=>> 一旦我開始從應用程序本身生成 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>

以防萬一有人遇到類似的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM