다음 컨테이너 형식의 스트림은 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는 앱의 요구사항에 맞게 재생 환경을 조정할 수 있는 여러 가지 방법을 제공합니다. 예시는 맞춤설정 페이지를 참고하세요.