2

我正在尝试在我的项目中使用 Exoplayer(而不是 Android 的 MediaPlayer)。但是,我有一个问题:获取当前音频会话的 id。传统的MediaPlayer,调用getAudioSessionId就可以了,但是Exoplayer没有对应的方法。有人帮我吗?

4

5 回答 5

5

从 ExoPlayer2 开始MediaCodecAudioTrackRendererPlayerControl不能再用于获取 AudioSessionId。相反,您应该AudioRendererEventListener在 exoPlayer 实例上设置一个。


编辑:

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 回答