Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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调整仪表板流音量_Android_Streaming_Volume_Exoplayer - Fatal编程技术网

使用Android Exoplayer调整仪表板流音量

使用Android Exoplayer调整仪表板流音量,android,streaming,volume,exoplayer,Android,Streaming,Volume,Exoplayer,我正在尝试设置一个seekbar来控制exoplayer流媒体dash实例的级别 我使用的设置是演示项目的一个修改版本,我很难确定我应该尝试影响seekbars输出的哪个元素,即如何正确使用MSG\u SET\u VOLUME等 任何意见都将不胜感激 我要寻找的最终结果是一个应用程序,它有两个exoplayer实例,都是通过一个音量控制器(seekbar)控制两个播放器的混合来流式播放短跑内容(一旦解决了这个问题,如果数学正确的话,我想应该很简单) 再一次,任何帮助都将不胜感激。到目前为止,作为

我正在尝试设置一个seekbar来控制exoplayer流媒体dash实例的级别

我使用的设置是演示项目的一个修改版本,我很难确定我应该尝试影响seekbars输出的哪个元素,即如何正确使用MSG\u SET\u VOLUME等 任何意见都将不胜感激

我要寻找的最终结果是一个应用程序,它有两个exoplayer实例,都是通过一个音量控制器(seekbar)控制两个播放器的混合来流式播放短跑内容(一旦解决了这个问题,如果数学正确的话,我想应该很简单)
再一次,任何帮助都将不胜感激。到目前为止,作为一名新手,我与Exoplayer共度了一段时间!谢谢大家

如果我正确阅读了ExoPlayer源代码,那么在准备ExoPlayer实例时,您必须保留对所用音频渲染器的引用

exoPlayer.prepare(audioRenderer);
要更改音量,您必须发送以下消息:

exoPlayer.sendMessage(audioRenderer, MediaCodecAudioTrackRenderer.MSG_SET_VOLUME, 0.1f);
首先,传递要更改其音量的audioRenderer。其次,定义要发送到渲染器的消息,即MSG_SET_VOLUME,因为您希望影响音频。 最后,传递要将卷设置为的值。在本例中,我选择了0.1f,但您当然可以使用任何适合您需要的值

如果将消息发送到用于准备播放的两个MediaCodeAudioTrackRenders,则可以影响两个不同的播放音量。因此,您可以发送两条消息,例如,AudioRender1的值为0.4f,AudioRender2的值为0.6f,以将回放相互混合

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

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

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

谢谢你的意见!这给了我一些要遵循的线索,但是我遇到了麻烦,因为我的渲染器和播放器都在不同的类中。根据演示,我使用DashRenderBuilder和Player及Playeractivity类创建播放器,目前seekbar在Playeractivity类中。无论如何,正如我所说,我是一个相当初学者,所以这是所有的很多需要采取的和进展缓慢的时刻!你真的需要演示播放器的全部功能吗?如果不需要,您可以尝试构建自己的播放器,如果您只需要一小部分功能,就可以将其变得更轻薄。我只在标准和加密的MP3上使用ExoPlayer,而且它很容易管理。是的,我正在尽最大努力缩小它的尺寸,当我在流式处理Dash内容时,我使用了项目中相对较大的一部分,并且在保留功能的同时慢慢删除了我可以从中删除的内容:)一旦我将RenderBuilder与播放器放在同一个活动中,我将能够更容易地向这两个组件发送消息。这是一个非常牛仔的工作在目前!但这似乎是我现在最好的选择!再次感谢你的帮助!