我试图设置一个搜索栏来控制exoplayer流式传输实例的级别。
我正在使用的设置是演示项目的修改版本,我很难确定我应该尝试使用seekbars输出影响哪个元素,即如何正确使用MSG_SET_VOLUME等等 任何意见都会受到大力赞赏。
我正在寻找的最终结果是一个带有两个exoplayer实例的应用程序,两个流媒体短划线内容都有一个推子(搜索栏)控制着两个玩家的混合(一旦弄清楚我认为应该很容易,如果数学是正确的) 再一次任何帮助都会非常感激我到目前为止Exoplayer已经有点时间了这么一个新手!谢谢你们!
答案 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);
}
}