为什么我的 XamarinMediaManager 无法播放 HLS?

问题描述

我即将通过 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);
        }
    }
}

程序运行后,总是不能播放。

enter image description here

我的代码有什么问题?谢谢。

解决方法

在后面的代码中,编写如下代码:

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