0

을 사용하여 URL을 스트리밍하려고했습니다. 의 URL :ExoPlayer를 사용하여 AAC 파일에 대한 getDuration()을 가져올 수 없습니다.

STREAM_URL_1 = "http://storage.googleapis.com/exoplayer-test-media-0/play.mp3"

STREAM_URL_2 = "https://s3-ap-southeast-1.amazonaws.com/ok.talk.channels/zakirkhan/Zakir+khan+-+when+my+father+took+my+gf%27s+call.aac"

두 URL을 연주하지만 내가는 .aac 파일입니다 STREAM_URL_2에 대한 getDuration()을 얻을 수 없습니다입니다. .mp3가 작동합니다.

다음은 어떻게 사용합니까? 두 번째 URL에 대해 getDuration()을 얻으려면 어떻게해야합니까? getDuration()이 작동하지 않으면 seekTo()도 작동하지 않습니다.

어떤 변경을해야합니까? Extractor을 변경해야합니까?

player = ExoPlayer.Factory.newInstance(RENDERER_COUNT, MIN_BUFFER_MS, MIN_RE_BUFFER_MS); 
playerControl = new PlayerControl(player); 
Allocator allocator = new DefaultAllocator(BUFFER_SEGMENT_SIZE); 

private static final String STREAM_URL = "http://storage.googleapis.com/exoplayer-test-media-0/play.mp3"; 
uri = Uri.parse(STREAM_URL); 

// Build the video and audio renderers. 
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(player.getMainHandler(), 
    null); 
String userAgent = Util.getUserAgent(this, "MyMediaPlayer"); 
DataSource dataSource = new DefaultUriDataSource(context, bandwidthMeter, userAgent, true); 
ExtractorSampleSource sampleSource = new ExtractorSampleSource(uri, dataSource, allocator, 
    BUFFER_SEGMENT_COUNT * BUFFER_SEGMENT_SIZE); 

MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, 
    null, true); 

// Invoke the callback. 
TrackRenderer[] renderers = new TrackRenderer[1]; 
renderers[RadioPlayer.TYPE_AUDIO] = audioRenderer; 
player.prepare(renderers); 
player.seekTo(0); 
player.setPlayWhenReady(true); 

답변

1

코드에 아무 문제가 없습니다. MP3 파일은 파일의 길이를 계산할 수있는 방식으로 형식이 지정되어 있으며 파일의 위치를 ​​찾을 수 있습니다.

그러나 AAC 파일에는 이러한 명품이 없습니다. 기간을 계산할 수 없으며 기간을 찾을 수 없습니다.

Exoplayer Demo APK에는 AAC 파일이 있습니다. 나는 당신이 그것을하면, 같은 행동을 보일 것이라고 생각합니다.

+0

예, 당신 말이 맞습니다. AAC 파일에서도 마찬가지입니다. 그러나,'MediaPlayer'를 사용할 때, 존속 기간과 위치 찾기를 모두 할 수있었습니다. 어떻게 복제 될 수 있습니까? –