Как транслировать видеофайл в формате .m3u8 в формате Xamarin.Forms - PullRequest
0 голосов
/ 29 апреля 2019

(Новое в Xamarin.Forms) Я хочу транслировать видеофайлы .m3u8 в свое приложение Xamarin.Forms?

Это из Документация Microsoft

"Однако для VideoPlayer опция потоков недоступна, поскольку iOS и Android не поддерживают воспроизведение видео из потока. "

[это из абзаца справа над заголовком «Источники видео»]

Возможно ли это? Какие у меня варианты?

Это первый раз, когда мне нужно было воспроизвести видео, я искал некоторые библиотеки и нашел Xamarin.MediaManager, но он выдавал исключение на iOS (при инициализации видеоплеера) и тоже не воспроизводил файлы m3u8 на Android ( он воспроизводил mp3 и mp4 файлы с URL https)

Поэтому я решил использовать пользовательские средства визуализации для видеоплеера, приведенные в Xamarin.Forms Документация

  • Теперь я могу воспроизводить файлы m3u8 с URL
  • Даже проигрывать http URL на iOS (раньше были проблемы с ATS)
  • , но не может воспроизводить прямые трансляции

Это демоверсия / учебник по VideoPlayer , за которыми я следовал в дополнение к указанной выше документации.

VideoPlayer в 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();

1 Ответ

0 голосов
/ 18 июля 2019

Нашли решение:

Я получал URL-адреса видео для прямых трансляций, создав их на своем ноутбуке. Служба, которую я использовал, каким-то образом связывала их (с предположением) с ПК.

Я не знаю, как, но видео можно было воспроизводить только на ноутбуке, с которого был сгенерирован 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>

На всякий случай, если кто-то сталкивается с подобной проблемой

...