Android平台GB28181设备接入端如何调节实时音量?

简介: 我们在对接Android平台GB28181设备接入端的时候,有开发者提出这样的疑惑,如何调整设备接入端的实时音量?

我们在对接Android平台GB28181设备接入端的时候,有开发者提出这样的疑惑,如何调整设备接入端的实时音量?


实际上,这块我们前几年在做RTMP直播推送模块的时候,已经发布了相关的接口,这里再回顾下:

/*
 * SmartPublisherJniV2.java
 * Author: daniusdk.com
 */
  /**
   * 设置输入音量, 这个接口一般不建议调用, 在一些特殊情况下可能会用, 一般不建议放大音量
   *
   * @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);


根据接口描述,我们可以很明确的知道,我们实时音量调节接口,一般建议在[0.0, 1.0]范围内设定,也就是说,设置0.0的时候,相当于实时静音,设置1.0的时候,是正常采集的音量。


考虑到有些设备采集到的音量比较小,我们做了一定的音量放大处理,volume范围设置在 [0.0, 5.0]区间,一般来说我们不太建议使用,或不建议放大范围过大,避免破音等不好的体验。


demo如下图,音量调节部分(选项置于实时静音按钮右侧,如果不需要精细化的处理,也可以用实时静音接口):

69890188d8b94921ab892bd616a31e21.png

接口调用,非常简单,demo默认加了几个常用的值,下拉选择即可:

        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 || isGB28181StreamRunning)  {
                    if (libPublisher != null && publisherHandle != 0) {
                        libPublisher.SmartPublisherSetInputAudioVolume(publisherHandle, 0 , in_audio_volume_);
                    }
                }
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

感兴趣的开发者,可以自行参考实现。

相关文章
|
5月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
253 64
|
5月前
|
存储 Android开发 数据安全/隐私保护
如何在Android设备上撤销Flutter应用程序的所有权限?
如何在Android设备上撤销Flutter应用程序的所有权限?
316 64
|
5月前
|
缓存 Android开发 开发者
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
895 62
|
5月前
|
开发工具 Android开发 开发者
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
286 61
|
2月前
|
监控 Android开发 数据安全/隐私保护
批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能
|
6月前
|
存储 编解码 监控
Android平台GB28181执法记录仪技术方案与实现
本文介绍了大牛直播SDK的SmartGBD在执法记录仪场景中的应用。GB28181协议作为视频监控联网的国家标准,为设备互联互通提供规范。SmartGBD专为Android平台设计,支持音视频采集、编码与传输,具备自适应算法和多功能扩展优势。文章分析了执法记录仪的需求,如实时音视频传输、设备管理及数据安全,并详细阐述了基于SmartGBD的技术实现方案,包括环境准备、SDK集成、设备注册、音视频处理及功能扩展等步骤。最后展望了SmartGBD在未来智慧物联领域的广阔应用前景。
215 13
|
6月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
Android开发 UED
Android官方开发文档Training系列课程中文版:管理音频播放之控制APP的音量与播放
原文地址:http://android.xsoftlab.net/training/managing-audio/index.html 引言 如果APP需要播放音频,允许用户可以控制音频的播放状态是很重要的一点。
1162 0
|
2月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
124 11
|
6月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
1139 77