问题描述
我即将通过 Xamarin.Forms(5.0.0.2012) 在 android 设备上播放 HLS。
我引用了 XamarinMediaManager Nuget Package(1.0.8)
Android 版本是 10.0(Q)。
这是我的代码:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:mm="clr-namespace:MediaManager.Forms;assembly=MediaManager.Forms"
x:Class="Test.Pages.RootPage" NavigationPage.HasNavigationBar="False" >
<ContentPage.Content>
<Grid>
<mm:VideoView VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Source="http://live4.tdm.com.mo/ch1/_definst_/ch1.live/playlist.m3u8" ShowControls="False" x:Name="Player" Autoplay="True" />
</Grid>
</ContentPage.Content>
</ContentPage>
这里是android项目的MainActivity中的代码:
using System;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using MediaManager;
namespace Test.Droid
{
[Activity(Label = "Test",Icon = "@mipmap/icon",Theme = "@style/MainTheme",MainLauncher = true,ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize )]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this,savedInstanceState);
global::Xamarin.Forms.Forms.Init(this,savedInstanceState);
CrossMediaManager.Current.Init(this);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode,string[] permissions,[GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode,permissions,grantResults);
base.OnRequestPermissionsResult(requestCode,grantResults);
}
}
}
我的代码有什么问题?谢谢。
解决方法
在后面的代码中,编写如下代码:
var item = await CrossMediaManager.Current.Extractor.CreateMediaItem("https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8"); item.MediaType = MediaType.Hls;
await CrossMediaManager.Current.Play(item);
为了更好地理解,请查看以下HLS Video sample application