Прямая трансляция EXOPlayer - реализация и полезные советы

Опубликовано: 2018-06-08

Воспроизведение музыки и видео с помощью потоковой передачи в реальном времени - важное занятие для устройств Android. YouTube - одна из самых мощных платформ для обмена видеоконтентом. Следовательно, вы можете приобрести подписчиков на каналы YouTube, чтобы общаться с большим количеством людей. Следовательно, для пользователей существует множество возможностей сделать это, большинство из них с открытым исходным кодом. Из-за их большого ассортимента иногда бывает сложно выбрать лучшее. Тем не менее, существует определенный способ предоставить вашему проекту лучшие удобства. В этой статье мы поделимся своим мнением о том, какой сервис плеера выбрать и почему. Позвольте познакомить вас с миром неограниченных потоковых возможностей, в котором нативный MediaPlayer остается одним из самых популярных. Однако появился и новый полевой игрок. ExoPlayer с его прямой трансляцией EXOPlayer имеет более широкий спектр функций и готов стать вашим следующим фаворитом.

Основное изображение прямой трансляции EXOPlayer

Краткий обзор

Еще в 2014 году реализация библиотеки Google ExoPlayer для видеоплеера с настраиваемым управлением и «exo live stream» была блестящей идеей. Встроенный нативный MediaPlayer доказал свою несостоятельность в таком важном вопросе, как стабильное и надежное поведение на разных устройствах. Его капризность вместе с тяжелым кодом и бескомпромиссной политикой производительности сделали его известным среди экспертов. Напротив, недавно выпущенный ExoPlayer, построенный на основе низкоуровневых медиа-API Android, обеспечил лучшие возможности потоковой передачи музыки и видео.

Первой и основной причиной его выпуска была, конечно же, реализация HTTP Live Streaming (HLS) - протокола для мультимедийного вещания, разработанного Apple. В нем видеоконтент состоит из фрагментов, загружаемых в реальном времени и с адаптивной скоростью передачи битов. Таким образом, прямая трансляция ExoPlayer стала полностью настраиваемой альтернативой собственным API MediaPlayer, предоставляя удобный API для потоковой передачи видео и звука на всех устройствах. Сейчас его используют тысячи приложений с такими знаменитостями, как BBC.

Альтернативы (и почему их не следует выбирать)

Конечно, у ExoPlayer есть ряд достаточно успешных конкурентов. В их число входят такие известные сервисы, как:

  • Vimeo

потоковое изображение vimeo exo

  • Витамио;

изображение vitamio exoplayer hls

  • LibVLC.

Однако теперь можно с уверенностью сказать, что ExoPlayer намного лучше любого из них. Несмотря на впечатляющее количество подписчиков, Vimeo не хватает гибкости, поскольку контент хранится исключительно на его серверах, а ссылка iframe предоставляется для воспроизведения в WebView. Это значительно снижает производительность приложения. Основанный на популярной библиотеке FFmpeg и обладающий множеством полезных функций, Vitamio приобрел большую популярность. Однако это платный сервис, поэтому не многие люди готовы им пользоваться. LibVLC довольно ограничен в своей функциональности, поскольку он обрабатывает только проекты с поддержкой NDK. Поэтому ExoPlayer на сегодняшний день является самым популярным сервисом подобного типа.

Что положительного?

Как и любой сервис, ExoPlayer имеет свои достоинства и недостатки. К его основным плюсам можно отнести:

  • реализация exoplayer HLS со всеми его расширенными функциями, такими как обработка ошибок и т. д .;
  • легкий старт;
  • База Java, которая дает возможность успешной отладки;
  • разнообразие форматов;
  • полная поддержка стандартного шифрования Widevine для Android 4.4 и выше.
  • полностью настраиваемые компоненты управления;
  • возможность проигрывания аудио и видео в потоке;
  • поддержка субтитров;
  • Поддержка Google Cast SDK, позволяющая работать с телевизором или звуковой системой;
  • Использование MediaSource.

Последний позволяет настраивать не только поток HLS exoplayer, но также DASH (DashMediaSource) и SmoothStreaming (SsMediaSource). Он также позволяет использовать такие компоненты потоковой передачи в реальном времени EXOPlayer, как субтитры с боковой загрузкой, а также воспроизведение видеопоследовательностей. Еще одна захватывающая функция, которой он обладает, - это недавно выпущенный PlayerNotificationManager, который позволяет пользователю получать уведомления о воспроизведении для управления потоковой передачей вашего видео или аудио exo. С их помощью вы можете плавно перематывать вперед, назад, переходить к следующей дорожке и т. Д. Чтобы создать MediaSource для потокового видео HLS, вам необходимо выполнить такие простые действия:


fun getHlsMediaSource (hls: String): MediaSource {
val bandwidthMeter = DefaultBandwidthMeter ()
val applicationName = Util.getUserAgent (контекст, ИМЯ ПРИЛОЖЕНИЯ)
val dataSourceFactory = DefaultDataSourceFactory (контекст, имя приложения, bandwidthMeter)
val factory = HlsMediaSource.Factory (dataSourceFactory)
вернуть factory.createMediaSource (Uri.parse (hls))
}


Кроме того, библиотека потокового вещания EXOPlayer имеет ряд других фантастических возможностей, таких как MergingMediaSource, ConcatenatingMediaSource, TrackSelector и LoopingMediaSource. Все они гарантируют безупречную работу сложной системы потоковых возможностей Exo. ExoPlayer имеет ряд этих компонентов по умолчанию для основных функций. Тем не менее, он также может использовать многочисленные индивидуальные реализации для нестандартной производительности.

В целом, exo live stream выполняет все важные задачи, такие как потоковая передача видео с выявлением ошибок, связанных с источником контента, добавление видео- или аудиоплеера, поддерживающего большинство современных форматов, в ваше мобильное или ТВ-приложение в режиме реального времени. короткое время и т. д.

Что отрицательно?

Конечно, нет ничего идеального. Прямая трансляция EXOPlayer, несмотря на ее современность и ряд интересных функций, не является исключением. Основные его недостатки:

  • конструктивные ограничения;
  • отсутствие поддержки более ранних версий Android, чем 16;
  • невозможность воспроизведения игрока при заблокированном экране;
  • нет обратной перемотки на последнюю просмотренную позицию.

Рабочее решение последней проблемы выглядит так:


override fun onPause () {

супер .onPause ()

releasePlayer ()

}


private fun releasePlayer () {

if ( simpleExoPlayer ! = null ) {

resumePosition = Math.max (0, simpleExoPlayer !!. contentPosition )

shouldAutoPlay = simpleExoPlayer !!. playWhenReady

simpleExoPlayer !!. release ()

simpleExoPlayer = нуль

}

}


override fun onResume () {

супер .onResume ()

initPlayer ()

}


приватное развлечение initPlayer () {

simpleExoPlayer = streamConfigurator .createExoPlayer ()

simpleExoPlayerView. useController = true

simpleExoPlayerView. player = simpleExoPlayer

simpleExoPlayer ? .seekTo ( resumePosition )

}


Однако эти проблемы могут быть связаны с особенностями архитектуры Android и ее гиперпоточностью, и разработчикам Android могут потребоваться несколько трудностей. Кроме того, прямая трансляция ExoPlayer - отличный выбор.

Алгоритм прямой трансляции EXOPlayer

Эксперты утверждают, что ExoPlayer действительно удобен и прост в использовании, и мы полностью согласны с этой мыслью. Чтобы начать с ним работу, вам нужно выполнить всего несколько простых шагов. Они включают:

  • добавление ExoPlayer в ваш проект в форме зависимости. Добавление его в файл модуля приложения обеспечит его работу для полной библиотеки потокового вещания ExoPlayer;
  • создание экземпляра SimpleExoPlayer (для этого используйте ExoPlayerFactory);
  • прикрепление плеера к просмотру как для вывода видео, так и для удобного ввода пользователем;
  • подготовка MediaSource плеера к игре.
  • релиз плеера (со специальным кодом).

Выводы

Прямая трансляция ExoPlayer - это готовое решение с открытым исходным кодом, которое позволяет решать многие проблемы, с которыми сталкиваются другие библиотеки. Как видите, список его достоинств и достоинств намного длиннее, чем перечисление отрицательных. Вероятно, по этой причине он используется в подавляющем большинстве приложений Android и полностью поддерживается Google. По сравнению со своими основными альтернативами, он намного более гибкий и простой. Наша команда советует вам начать использовать его, так как его захватывающие функции могут произвести на вас огромное впечатление.