前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTMP推送端如何调整采集端音量

RTMP推送端如何调整采集端音量

原创
作者头像
音视频牛哥
修改2020-06-16 10:08:42
7080
修改2020-06-16 10:08:42
举报

好多开发者提到,有些Windows机器或Android手机采集麦克风的音频,过小或过大,一般过小居多,还有就是,混音的时候,希望背景音音量大小可实时调整,针对这种情况,大牛直播SDK(Github)做了如下的设计:

1. Windows平台推送端(以C#为例):

代码语言:javascript
复制
		/*
		*设置输入音量, 这个接口一般不建议调用, 在一些特殊情况下可能会用, 一般不建议放大音量
		*index: 一般是0和1, 如果没有混音的只用0, 有混音的话, 0,1分别设置音量
		*volume: 音量,默认是1.0,范围是[0.0, 5.0], 设置成0静音, 1音量不变
		*成功返回 NT_ERC_OK
		*/
        [DllImport(@"SmartPublisherSDK.dll")]
        public static extern UInt32 NT_PB_SetInputAudioVolume(IntPtr handle, Int32 index, float volume);

对应界面如下:

麦克风、扬声器音量可单独实时调整
麦克风、扬声器音量可单独实时调整

2. Android推送端:

代码语言:javascript
复制
	/**
	 * 设置输入音量, 这个接口一般不建议调用, 在一些特殊情况下可能会用, 一般不建议放大音量
	 *
	 * @param index: 一般是0和1, 如果没有混音的只用0, 有混音的话, 0,1分别设置音量
	 *
	 * @param volume: 音量,默认是1.0,范围是[0.0, 5.0], 设置成0静音, 1音量不变
	 *
	 * @return {0} if successful
	 */
	public native int SmartPublisherSetInputAudioVolume(long handle, int index, float volume);

对应调用实例:

代码语言:javascript
复制
        in_audio_volume_selector_ = (Spinner) findViewById(R.id.in_audio_volume_selector);

        final String[] in_audio_volume_sel = new String[]{ "0", "0.2", "0.5", "0.8","1", "1.5",  "2",  "2.5",  "3",  "3.5",  "4",  "4.5",  "5"};
        ArrayAdapter<String> adapter_in_audio_volume = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, in_audio_volume_sel);

        adapter_in_audio_volume.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        in_audio_volume_selector_.setAdapter(adapter_in_audio_volume);

        in_audio_volume_selector_.setSelection(4, true);

        in_audio_volume_selector_.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                                       int position, long id) {
                Log.i(TAG, "Currently audio volume choosing: " + in_audio_volume_sel[position]);

                in_audio_volume_ = Float.parseFloat(in_audio_volume_sel[position]);

                Log.i(TAG, "Choose audio volume=" + in_audio_volume_);

                if(isPushingRtmp || isRecording || isRTSPPublisherRunning || isPushingRtsp)  {
                    if (libPublisher != null && publisherHandle != 0) {
                        libPublisher.SmartPublisherSetInputAudioVolume(publisherHandle, 0 , in_audio_volume_);
                    }
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

音频放大或缩小,需要注意的是,处理尽可能的线性,防止溢出,感兴趣的开发者,可以多交流。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档