프로그레시브

다음 컨테이너 형식의 스트림은 ExoPlayer에서 직접 재생할 수 있습니다. 포함된 오디오 및 동영상 샘플 형식도 지원되어야 합니다(자세한 내용은 샘플 형식 섹션 참고). 이미지 컨테이너 및 형식 지원은 이미지.

컨테이너 형식 지원됨 비고
MP4
모바일 앱
FMP4
WebM
Matroska
MP3 일부 스트림은 고정 비트 전송률 탐색으로만 탐색 가능**
Ogg Vorbis, Opus, FLAC 포함
WAV
MPEG-TS
MPEG-PS
FLV 탐색 불가*
ADTS (AAC) 일정한 비트 전송률 탐색을 사용하여만 탐색 가능**
FLAC FLAC 라이브러리 또는 ExoPlayer 라이브러리의 FLAC 추출기 사용***
AMR 고정 비트 전송률 탐색을 통해서만 탐색 가능**

* 컨테이너가 미디어 플레이어가 효율적인 방식으로 탐색을 실행할 수 있도록 하는 메타데이터(예: 샘플 색인)를 제공하지 않으므로 탐색이 지원되지 않습니다. 탐색이 필요한 경우 더 적합한 컨테이너 형식을 사용하는 것이 좋습니다.

** 이러한 추출기에는 FLAG_ENABLE_CONSTANT_BITRATE_SEEKING 플래그가 있습니다. 일정한 비트 전송률 가정을 사용하여 근사치 탐색을 지원합니다. 이 기능은 기본적으로 사용 설정되어 있지 않습니다. 이 기능을 지원하는 모든 추출기에 이 기능을 사용 설정하는 가장 간단한 방법은 여기에 설명된 대로 DefaultExtractorsFactory.setConstantBitrateSeekingEnabled를 사용하는 것입니다.

*** FLAC 라이브러리 추출기는 모든 API 수준에서 프레임워크에서 처리할 수 있는 원시 오디오를 출력합니다. ExoPlayer 라이브러리 FLAC 추출기는 FLAC 오디오 프레임을 출력하므로 FLAC 디코더(예: FLAC을 처리하는 MediaCodec 디코더(API 수준 27부터 필요), 또는 FLAC이 사용 설정된 FFmpeg 라이브러리)가 있어야 합니다. DefaultExtractorsFactory는 확장 프로그램 추출기(애플리케이션이 FLAC 라이브러리로 빌드된 경우) 그렇지 않으면 ExoPlayer 라이브러리 추출기를 사용합니다.

MediaItem 사용

프로그레시브 스트림을 재생하려면 미디어 URI로 MediaItem를 만들고 플레이어에 전달합니다.

Kotlin

// Create a player instance.
val player = ExoPlayer.Builder(context).build()
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(progressiveUri))
// Prepare the player.
player.prepare()

자바

// Create a player instance.
ExoPlayer player = new ExoPlayer.Builder(context).build();
// Set the media item to be played.
player.setMediaItem(MediaItem.fromUri(progressiveUri));
// Prepare the player.
player.prepare();

ProgressiveMediaSource 사용

더 많은 맞춤설정 옵션을 사용하려면 MediaItem 대신 ProgressiveMediaSource를 만들어 플레이어에 직접 전달하면 됩니다.

Kotlin

// Create a data source factory.
val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory()
// Create a progressive media source pointing to a stream uri.
val mediaSource: MediaSource =
ProgressiveMediaSource.Factory(dataSourceFactory)
    .createMediaSource(MediaItem.fromUri(progressiveUri))
// Create a player instance.
val player = ExoPlayer.Builder(context).build()
// Set the media source to be played.
player.setMediaSource(mediaSource)
// Prepare the player.
player.prepare()

자바

// Create a data source factory.
DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory();
// Create a progressive media source pointing to a stream uri.
MediaSource mediaSource =
    new ProgressiveMediaSource.Factory(dataSourceFactory)
        .createMediaSource(MediaItem.fromUri(progressiveUri));
// Create a player instance.
ExoPlayer player = new ExoPlayer.Builder(context).build();
// Set the media source to be played.
player.setMediaSource(mediaSource);
// Prepare the player.
player.prepare();

재생 맞춤설정

ExoPlayer는 앱의 요구사항에 맞게 재생 환경을 조정할 수 있는 여러 가지 방법을 제공합니다. 예시는 맞춤설정 페이지를 참고하세요.