我正在尝试在我的项目中使用 Exoplayer(而不是 Android 的 MediaPlayer)。但是,我有一个问题:获取当前音频会话的 id。传统的MediaPlayer,调用getAudioSessionId就可以了,但是Exoplayer没有对应的方法。有人帮我吗?
问问题
2732 次
5 回答
5
从 ExoPlayer2 开始MediaCodecAudioTrackRenderer
,PlayerControl
不能再用于获取 AudioSessionId。相反,您应该在 exoPlayer 实例上设置一个。AudioRendererEventListener
编辑:
AudioRendererEventListener
现在已弃用。改为使用AnalyticsListener
。
exoplayer.addAnalyticsListener(new AnalyticsListener() {
/**
* Called when the audio session id is set.
*
* @param eventTime The event time.
* @param audioSessionId The audio session id.
*/
@Override
public void onAudioSessionId(EventTime eventTime, int audioSessionId) {
// do something with audioSessionId
}
});
于 2017-04-22T16:30:47.050 回答
3
Player.AudioComponent audioComponent = exoPlayer.getAudioComponent();
int audioSessionid=audioComponent.getAudioSessionId();
于 2019-09-10T08:15:35.600 回答
1
这是我用来获取音频会话 ID 的代码片段 -
FrameworkSampleSource sampleSource = new FrameworkSampleSource(getApplicationContext(), builtUri, null);
MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, MediaCodecSelector.DEFAULT){
@Override
protected void onAudioSessionId(int audioSessionId) {
// do whatever u want to do with id.
}
};
exoPlayer.prepare(audioRenderer);
exoPlayer.setPlayWhenReady(true);
于 2016-05-04T11:11:23.150 回答
1
以上最简单的答案:
int audioSessionId = exoPlayer.getAudioSessionId();
这给出了当前播放媒体的音频会话 ID。
于 2021-11-23T13:11:31.407 回答
1
import com.google.android.exoplayer.util.PlayerControl;
通过传递您的 Exoplayer 实例来实例化 PlayerControl 对象。并调用 getAudioSessionId。
PlayerControl playerControl=new PlayerControl(Exoplayer.instance);
int audioSessionId=playerControl.getAudioSessionId();
我想这就是你想要的。
于 2015-11-06T16:36:41.640 回答