Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法使用ExoPlayer获取AAC文件的getDuration()_Android_Android Mediaplayer_Audio Player_Exoplayer_Android Music Player - Fatal编程技术网

Android 无法使用ExoPlayer获取AAC文件的getDuration()

Android 无法使用ExoPlayer获取AAC文件的getDuration(),android,android-mediaplayer,audio-player,exoplayer,android-music-player,Android,Android Mediaplayer,Audio Player,Exoplayer,Android Music Player,我一直在尝试使用ExoPlayer流式传输URL。网址: STREAM_URL_1=“” STREAM_URL_2=“” 两个URL都可以播放,但我无法获取STREAM\u URL\u 2的getDuration(),它是一个.aac文件。mp3的工作原理 以下是我如何做到这一点。如何获取第二个URL的getDuration()。如果getDuration()不起作用,则即使是seekTo()也不起作用 我应该做什么改变?我是否需要更改任何提取器 player = ExoPlayer.Facto

我一直在尝试使用
ExoPlayer
流式传输
URL
。网址:

STREAM_URL_1=“”

STREAM_URL_2=“”

两个URL都可以播放,但我无法获取STREAM\u URL\u 2的
getDuration()
,它是一个.aac文件。mp3的工作原理

以下是我如何做到这一点。如何获取第二个URL的
getDuration()
。如果
getDuration()
不起作用,则即使是
seekTo()
也不起作用

我应该做什么改变?我是否需要更改任何
提取器

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);

你的代码没有错。MP3文件的格式化方式可以计算文件的持续时间,并搜索文件中的任何位置

然而,AAC文件并没有这种奢侈。你无法计算持续时间,也无法在其中寻找


Exoplayer演示APK中有一个AAC文件。我想如果你玩这个,它也会表现出同样的行为

是的,你说得对。AAC文件也存在同样的问题。但是,当我使用
MediaPlayer
时,可以同时获取持续时间和搜索位置。如何复制这种情况?