0

J'ai essayé de diffuser un URL en utilisant ExoPlayer. Les URL:Impossible d'obtenir getDuration() pour le fichier AAC en utilisant ExoPlayer

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"

jouent deux URL, mais je ne suis pas en mesure d'obtenir le getDuration() pour STREAM_URL_2 qui est un fichier aac. Le .mp3 fonctionne.

Voici comment je le fais. Comment puis-je obtenir le getDuration() pour la 2ème URL. Même seekTo() ne fonctionne pas si getDuration() ne fonctionne pas.

Quel changement dois-je faire? Dois-je changer un 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); 

Répondre

1

Il n'y a rien de mal dans votre code. Les fichiers MP3 sont formatés de telle manière qu'il est possible de calculer la durée du fichier et de chercher dans n'importe quelle position à l'intérieur de celui-ci.

Cependant, les fichiers AAC ne sont pas ce luxe. Vous ne pouvez pas caluler la durée et ne pouvez pas chercher dedans.

Il y a un fichier AAC dans Exoplayer Demo APK. Je pense que si vous jouez cela, il présentera le même comportement.

+0

Oui, vous avez raison. La même chose est le problème avec ce fichier AAC aussi. Mais lorsque j'utilisais MediaPlayer, il était possible d'obtenir la durée et de chercher un emplacement. Comment cela peut-il être répliqué? –