如何在 Xamarin.Forms 中直播 .m3u8 视频文件
How to live stream a .m3u8 video file in Xamarin.Forms
(Xamarin.Forms 的新手)
我想在我的 Xamarin.Forms 应用程序中直播 .m3u8 视频文件?
"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
中给出的视频播放器自定义渲染器
- 现在我可以播放 url
中的 m3u8 文件了
- 甚至在 iOS 上玩 http urls(之前有 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();
找到解决方案:
我通过在笔记本电脑上生成视频来获取直播视频 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>
以防万一有人遇到类似问题
(Xamarin.Forms 的新手) 我想在我的 Xamarin.Forms 应用程序中直播 .m3u8 视频文件?
"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
中给出的视频播放器自定义渲染器- 现在我可以播放 url 中的 m3u8 文件了
- 甚至在 iOS 上玩 http urls(之前有 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();
找到解决方案:
我通过在笔记本电脑上生成视频来获取直播视频 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>
以防万一有人遇到类似问题