首页 > 其他分享 >Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?

Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?

时间:2023-08-13 14:02:49浏览次数:42  
标签:GB28181 audioRecord volume _. int 音量 RTMP audio

我们在做Android平台RTMP推送和GB28181设备对接的时候,遇到这样的问题,有的设备,麦克风采集出来的audio,音量过高或过低,特别是有些设备,采集到的麦克风声音过低,导致播放端听不清前端采集的audio,这时候,就需要针对采集到的audio,做音量放大处理。

先说如何采集,android平台通用的做法是采集audiorecord,设置audio的采样率和channels,为了便于数据进行二次处理,或者同时投递给多个实例,我们的做法,是把采集到的audio,回调上来,然后再设置到jni层:

void CheckInitAudioRecorder() {
  if (audioRecord_ == null) {
    audioRecord_ = new NTAudioRecordV2(this);
  }

  if (audioRecord_ != null) {
    Log.i(TAG, "CheckInitAudioRecorder call audioRecord_.start()+++...");

    audioRecordCallback_ = new NTAudioRecordV2CallbackImpl();

    audioRecord_.AddCallback(audioRecordCallback_);

    audioRecord_.Start(16000, 1);

    Log.i(TAG, "CheckInitAudioRecorder call audioRecord_.start()---...");
  }
}

audio回调处理:

class NTAudioRecordV2CallbackImpl implements NTAudioRecordV2Callback {
  @Override
  public void onNTAudioRecordV2Frame(ByteBuffer data, int size, int sampleRate, int channel, int per_channel_sample_number) {

    if ((isPushingRtmp || isRTSPPublisherRunning) && publisherHandle != 0) {
      libPublisher.SmartPublisherOnPCMData(publisherHandle, data, size, sampleRate, channel, per_channel_sample_number);
    }
  }
}

如何实现audio音量放大?

输入音量的调节,需要注意的是,处理音频音量时要尽可能线性,以防止溢出。我们针对jni层的设计如下:

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

调用逻辑如下:

Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?_GB28181音量放大

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 || isRTSPPublisherRunning) {
                    if (libPublisher != null && publisherHandle != 0) {
                        libPublisher.SmartPublisherSetInputAudioVolume(publisherHandle, 0, in_audio_volume_);
                    }
                }
            }

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

            }
        });

感兴趣的开发者,可以参考实现,需要注意的是,audio采集可能不限于麦克风,也可能是第三方数据采集源,所以接口设计的时候,尽量考虑在jni层针对数据源做处理,此外,除了音量放大外,还可以做音量缩小,或者实时静音。

标签:GB28181,audioRecord,volume,_.,int,音量,RTMP,audio
From: https://blog.51cto.com/daniusdk/7066673

相关文章

  • 国标GB28181视频平台LntonGBS(源码版)国标视频平台在网络不稳定的强况下重复申请视频拉
    LntonGBS是基于国标GB28181协议的视频云服务平台,支持将国标协议的设备统一接入并进行集中管理。平台具备优秀的视频能力,包括视频监控直播、录像、云存储、回放、平台级联、语音对讲、智能告警等功能,在线下场景中已有大量落地应用。我们在项目测试中发现,LntonGBS通过web页面请求拉流......
  • 国标GB28181视频平台LntonGBS(源码版)国标视频云服务平台主子码流都为H.265时,切换出现花
    国标视频云服务LntonGBS平台是基于国标GB28181协议的平台,可实现的视频能力有:实时直播、视频录像、语音对讲、云存储、检索及回放、告警、级联等。平台支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。最近有用户反馈,在LntonGBS平台......
  • RTMP流媒体服务器LntonMedia(免费版)视频直播点播平台采用Golang指针问题导致平台重复推
    我们的团队在研发视频流媒体平台时,广泛应用了Go语言。之前我们也与大家交流过关于Go语言指针的问题和应用。如果你对视频流媒体平台编译中如何运用Go语言指针感兴趣,可以了解一下我们的讨论。在对LntonMedia的编译中,我们发现Golang指针问题会导致系统内的重复推流。Golang遍历切片代......
  • RTMP流媒体服务器LntonMedia(免费)互联网视频云平台优化HLS的访问路径的方案
    LntonMedia视频平台具有便捷可控的特点,观看视频推流和直播时无需安装插件,只需通过浏览器进入平台即可进行配置。对于用户而言,这一优势使他们无需额外搭建服务器,享受到了方便和可操作性。在原先的LntonMedia设计中,LntonMedia平台直接获取到流媒体的存储hls的路径,然后将该路径变为可......
  • 对话音视频牛哥:如何设计功能齐全的跨平台低延迟RTMP播放器
    开发背景2015年,我们在做移动单兵应急指挥项目的时候,推送端采用了RTMP方案,这在当时算是介入RTMP比较早的了,RTMP推送模块做好以后,我们找了市面上VLC还有Vitamio,来测试整体延迟,实际效果真的不尽人意,大家知道,应急指挥系统,除了稳定性外,对延迟有很高的要求,几秒钟(>3-5秒)的延迟,是我们接受不......
  • Docker使用WVP-Pro-GB28181网络视频平台
    1--Docker拉取镜像#镜像地址:docker镜像地址dockerpull648540858/wvp_prodockerrun--envWVP_IP="192.168.18.61"-it-p18080:18080-p30000-30500:30000-30500/udp-p30000-30500:30000-30500/tcp-p80:80-p5060:5060-p5060:5060/udp648540858/wvp_pro#利用i......
  • 《AUDIOGEN: TEXTUALLY GUIDED AUDIO GENERATION》论文学习
    一、INTRODUCTION神经生成模型挑战了我们创造数字内容的方式。从生成高质量图像和语音,到生成长文本,再到最近提出的文本引导的图像生成,这些模型展示了令人印象深刻的结果。这引出一个问题,对于文本引导的生成模型来说,音频的等效物是什么?可以是文本吗?我们用文本来抽象出世界上纷繁复......
  • 国标GB28181视频平台LntonGBS(源码版)国标平台新增拉流超时配置的具体操作流程
    LntonGBS是一款基于公安部推出的安防主流协议(国标GB28181协议)的视频接入、处理及分发平台。它提供了一系列功能,包括视频直播监控、云端录像、云存储、检索回放、智能告警、语音对讲和平台级联等。通过支持国标GB28181协议,LntonGBS能够实现与各种符合该协议的视频设备的连接和交互。......
  • 国标GB28181视频云服务平台LntonGBS(源码)国标平台对接宇视SDK,多次点击录像回放出现崩溃
    LntonGBS是一款基于国标GB28181协议的视频云服务平台。通过该平台,可以实现设备接入并支持视频的实时监控直播、录像、语音对讲、云存储、告警、级联等功能。此外,LntonGBS还支持将接入的视频流进行全终端、全平台的分发,包括支持RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流分发。另......
  • 通过注册表关闭Windows 11的LE Audio功能 How to Disable LE Audio on Windows 11
    LEAudio是蓝牙音频的下一代技术,具有以下主要特点和优势:低能耗:LEAudio使用更高效的编解码器和低能量的蓝牙技术,从而降低了功耗,使设备的电池寿命更长。多设备连接:LEAudio支持多设备之间的同步连接,允许用户将多个蓝牙设备连接到同一音频源。广播音频:通过Auracast™广播音......