프로그레시브

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

컨테이너 형식 지원됨 비고
MP4
모바일 앱
FMP4는
WebM
마트로스카
MP3 일부 스트림은 고정 비트 전송률 탐색으로만 탐색 가능**
오그 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 디코더를 사용합니다 (예: MediaCodec FLAC (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 사용

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

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는 사용자의 기기에 맞게 재생 환경을 맞춤설정하는 여러 가지 방법을 파악할 수 있습니다. 예시는 맞춤설정 페이지를 참고하세요.