EXOPlayer 라이브 스트리밍 – 구현 및 유용한 팁

게시 됨: 2018-06-08

라이브 스트리밍을 통해 음악과 비디오를 재생하는 것은 Android 기기에서 중요한 활동입니다. YouTube는 비디오 콘텐츠를 공유할 수 있는 가장 강력한 플랫폼 중 하나입니다. 따라서 YouTube 채널 구독자를 구매하여 더 많은 사람들과 연결할 수 있습니다. 결과적으로 사용자가 그렇게 할 수 있는 많은 가능성이 있으며 대부분은 오픈 소스입니다. 범위가 넓기 때문에 때로는 최고를 선택하기가 어렵습니다. 그러나 프로젝트에 최상의 시설을 제공하는 특정 방법이 있습니다. 이 기사에서는 어떤 플레이어 서비스를 선택해야 하고 왜 선택해야 하는지에 대한 의견을 공유하고자 합니다. 기본 MediaPlayer가 여전히 가장 인기 있는 스트리밍 가능성의 세계를 소개합니다. 그러나 새로운 필드 플레이어도 나타났습니다. EXOPlayer 라이브 스트리밍이 포함된 ExoPlayer는 더 넓은 범위의 기능을 가지고 있으며 다음 즐겨찾기가 될 준비가 되어 있습니다.

EXOPlayer 라이브 스트리밍 메인 이미지

간략한 개요

2014년으로 돌아가보면 사용자 정의 컨트롤이 작동하고 '엑소 라이브 스트림'이 있는 비디오 플레이어용 Google ExoPlayer 라이브러리의 구현이 기발한 아이디어였습니다. 내장된 기본 MediaPlayer는 다른 장치에서 안정적이고 안정적인 동작과 같은 중요한 문제에서 불일치를 입증했습니다. 코드의 무거움과 타협하지 않는 성능 정책과 함께 그것의 변덕스러움은 전문가들 사이에서 악명 높았습니다. 이에 반해 새롭게 출시된 ExoPlayer는 안드로이드의 저수준 미디어 API를 기반으로 구축되어 최고의 음악 및 동영상 스트리밍 가능성을 보장했습니다.

출시의 첫 번째이자 가장 중요한 이유는 물론 Apple에서 개발한 미디어 방송용 프로토콜인 HTTP 라이브 스트리밍(HLS)의 구현이었습니다. 여기에서 비디오 콘텐츠는 실시간으로 로드된 조각으로 구성되며 적응형 비트 전송률을 사용합니다. 이것이 바로 ExoPlayer 라이브 스트리밍이 네이티브 MediaPlayer API에 대한 완전히 사용자 정의 가능한 대안이 된 방법으로 모든 장치에서 비디오 및 오디오 스트리밍을 위한 편리한 API를 제공합니다. 이제 BBC와 같은 유명인 이름이 포함된 수천 개의 앱에서 사용됩니다.

대안(및 선택하지 말아야 하는 이유)

물론 ExoPlayer에는 많은 성공적인 경쟁자가 있습니다. 여기에는 다음과 같은 잘 알려진 서비스가 포함됩니다.

  • 비메오

vimeo 엑소 스트리밍 이미지

  • 비타미오;

vitamio exoplayer hls 이미지

  • LibVLC.

그러나 이제는 ExoPlayer가 그 어떤 것보다 훨씬 낫다고 확실히 말할 수 있습니다. 인상적인 구독자 수에도 불구하고 Vimeo는 컨텐츠가 WebView에서 재생을 위해 제공되는 iframe 링크와 함께 서버에만 독점적으로 저장되기 때문에 유연성이 부족합니다. 그러면 응용 프로그램의 성능이 크게 저하됩니다. 인기 있는 FFmpeg 라이브러리를 기반으로 하고 유용한 기능이 많이 포함된 Vitamio는 많은 인기를 얻었습니다. 다만, 무료가 아닌 서비스라 이용할 준비가 된 사람은 많지 않다. LibVLC는 NDK를 지원하는 프로젝트만 처리하므로 기능이 다소 제한됩니다. 그렇기 때문에 ExoPlayer는 오늘날 이러한 유형의 서비스 중 가장 인기 있는 서비스입니다.

긍정적 인 것은 무엇입니까?

모든 서비스와 마찬가지로 ExoPlayer에는 장점과 단점이 있습니다. 주요 장점은 다음과 같습니다.

  • 버그 처리 등과 같은 모든 고급 기능을 갖춘 exoplayer HLS 구현;
  • 쉬운 시작;
  • 성공적인 디버깅의 가능성을 가능하게 하는 Java 기반;
  • 다양한 형식;
  • Android 4.4 이상에 대한 Widevine 공통 암호화를 완벽하게 지원합니다.
  • 완전히 사용자 정의 가능한 제어 구성 요소;
  • 스트림에서 오디오 및 비디오 재생 가능성;
  • 자막 지원;
  • TV 또는 사운드 시스템과 함께 작동할 수 있는 Google Cast SDK 지원
  • 미디어 소스 사용.

후자는 exoplayer HLS 스트림뿐만 아니라 DASH(DashMediaSource) 및 SmoothStreaming(SsMediaSource)도 구성할 수 있습니다. 또한 사이드로드 자막과 같은 EXOPlayer 라이브 스트리밍 구성 요소와 비디오 시퀀스 재생을 가능하게 합니다. 가지고 있는 또 하나의 흥미로운 기능은 새로 출시된 PlayerNotificationManager로, 사용자가 재생 알림을 받아 비디오 또는 오디오 엑소 스트리밍을 제어할 수 있습니다. 그것들을 사용하면 부드럽게 앞으로 감기, 되감기, 다음 트랙으로 전환 등을 할 수 있습니다. HLS 비디오 스트리밍을 위한 MediaSource를 만들려면 다음과 같은 간단한 작업을 수행해야 합니다.


재미 getHlsMediaSource(hls: 문자열): MediaSource {
val bandwidthMeter = DefaultBandwidthMeter()
val applicationName = Util.getUserAgent(컨텍스트, APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory(context, applicationName, bandwidthMeter)
공장 = HlsMediaSource.Factory(dataSourceFactory)
반환 factory.createMediaSource(Uri.parse(hls))
}


또한 EXOPlayer 라이브 스트리밍 라이브러리에는 MergingMediaSource, ConcatenatingMediaSource, TrackSelector 및 LoopingMediaSource와 같은 다양한 환상적인 기능이 있습니다. 그들은 모두 Exo 스트리밍 가능성의 복잡한 시스템의 완벽한 성능을 보장합니다. ExoPlayer는 기본 기능을 위해 기본적으로 이러한 구성 요소의 범위를 가지고 있습니다. 그러나 비표준 성능을 위해 수많은 사용자 정의 구현을 사용할 수도 있습니다.

대체로, 엑소 라이브 스트림은 콘텐츠 소스와 관련된 오류 식별을 통해 비디오 스트리밍, 대량의 최신 형식을 지원하는 비디오 또는 오디오 플레이어를 모바일 또는 TV 애플리케이션에 추가하는 것과 같은 모든 중요한 작업을 처리합니다. 짧은 시간 등

부정적인 것은 무엇입니까?

물론 완벽한 것은 없습니다. EXOPlayer 라이브 스트리밍은 현대성과 여러 흥미로운 기능에도 불구하고 예외는 아닙니다. 주요 단점은 다음과 같습니다.

  • 디자인 제한;
  • 16 이전 Android 버전에 대한 지원 부족;
  • 화면 잠금의 경우 플레이어의 레크리에이션 성능이 불가능합니다.
  • 마지막으로 본 위치로 되감지 않습니다.

후자의 과제에 대한 작업 솔루션은 다음과 같습니다.


재미있는 onPause() {

슈퍼 .onPause()

릴리스 플레이어()

}


개인 재미있는 releasePlayer() {

if ( simpleExoPlayer != null ) {

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

shouldAutoPlay = simpleExoPlayer !!. playWhenReady

simpleExoPlayer !!.release()

단순엑소플레이어 = null

}

}


재정의 재미 onResume() {

슈퍼 .onResume()

초기화 플레이어()

}


개인 재미 initPlayer() {

simpleExoPlayer = streamConfigurator .createExoPlayer()

심플엑소플레이어뷰. useController =

심플엑소플레이어뷰. 플레이어 = 단순ExoPlayer

simpleExoPlayer ?.seekTo( resumePosition )

}


그러나 이러한 문제는 Android 아키텍처 및 하이퍼스레딩의 특성에 기인할 수 있으므로 Android 개발자는 다소 어려움을 겪을 수 있습니다. 그 외에 ExoPlayer 라이브 스트리밍은 훌륭한 선택입니다.

EXOPlayer 라이브 스트리밍의 알고리즘

전문가들은 ExoPlayer가 정말 편리하고 사용하기 쉽다고 주장하며 우리는 이 생각에 전적으로 동의합니다. 작업을 시작하려면 몇 가지 간단한 단계만 수행하면 됩니다. 여기에는 다음이 포함됩니다.

  • 종속성 형태로 프로젝트에 ExoPlayer를 추가합니다. 앱 모듈의 파일에 추가하면 전체 ExoPlayer 라이브 스트리밍 라이브러리에서 작동합니다.
  • SimpleExoPlayer 인스턴스 생성(ExoPlayerFactory 사용)
  • 비디오 출력 및 쉬운 사용자 입력을 위해 보기에 플레이어 부착
  • 재생할 플레이어의 MediaSource 준비.
  • 플레이어의 릴리스(특수 코드 포함).

결론

ExoPlayer 라이브 스트리밍은 다른 라이브러리에서 문제가 되는 많은 문제를 해결할 수 있는 오픈 소스 기성 솔루션입니다. 보시다시피 장점과 긍정적 인 기능 목록은 부정적인 것보다 훨씬 깁니다. 아마도 그런 이유로 인해 대부분의 Android 애플리케이션에서 사용되며 Google에서 완벽하게 지원합니다. 주요 대안과 비교할 때 훨씬 더 유연하고 간단합니다. 우리 팀은 흥미진진한 기능이 큰 혼란을 줄 수 있으므로 사용을 시작하는 것이 좋습니다.