使用Android Exoplayer调整Dash流量

时间:2015-07-20 13:16:10

标签: android streaming volume exoplayer

我试图设置一个搜索栏来控制exoplayer流式传输实例的级别。

我正在使用的设置是演示项目的修改版本,我很难确定我应该尝试使用seekbars输出影响哪个元素,即如何正确使用MSG_SET_VOLUME等等 任何意见都会受到大力赞赏。

我正在寻找的最终结果是一个带有两个exoplayer实例的应用程序,两个流媒体短划线内容都有一个推子(搜索栏)控制着两个玩家的混合(一旦弄清楚我认为应该很容易,如果数学是正确的) 再一次任何帮助都会非常感激我到目前为止Exoplayer已经有点时间了这么一个新手!谢谢你们!

1 个答案:

答案 0 :(得分:1)

如果我正确阅读了ExoPlayer源代码,您必须保留对准备ExoPlayer实例时使用的audioRenderers的引用。

exoPlayer.prepare(audioRenderer);

要更改音量,您必须发送以下信息:

exoPlayer.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0.1f);

首先传递要更改音量的audioRenderer。其次,您要定义要发送到呈现器的消息,即MSG_SET_VOLUME,因为您想要影响音频。 最后,传递要设置卷的值。在这个例子中,我选择了0.1f,但当然你可以使用任何符合你需要的值。

如果您向用于准备播放的MediaCodecAudioTrackRenderers发送消息,则可以生成两个不同的播放音量。因此,您可以发送两条消息,例如audioRenderer1的值为0.4f,audioRenderer2的消息为0.6f,以便将播放相互混合。

我自己没试过,但我认为它应该有效。

这是原始ExoPlayer代码的片段,负责处理MSG_SET_VOLUME消息:

public void handleMessage(int messageType, Object message) throws ExoPlaybackException {
    if (messageType == MSG_SET_VOLUME) {
        audioTrack.setVolume((Float) message);
    } else {
        super.handleMessage(messageType, message);
    }
}