Android平臺GB28181設備接入端如何調節實時音量?

2022-12-26 18:21:12 來源:51CTO博客


(資料圖)

我們在對接Android平臺GB28181設備接入端的時候,有開發者提出這樣的疑惑,如何調整設備接入端的實時音量?

實際上,這塊我們前幾年在做RTMP直播推送模塊的時候,已經發布了相關的接口,這里再回顧下:

/* * SmartPublisherJniV2.java * Author: https://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如下圖,音量調節部分(選項置于實時靜音按鈕右側,如果不需要精細化的處理,也可以用實時靜音接口):

接口調用,非常簡單,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 adapter_in_audio_volume = new ArrayAdapter(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) {            }        });

感興趣的開發者,可以自行參考實現。

標簽: 如何調整 感興趣的 一般建議

上一篇:當前播報:#yyds干貨盤點# LeetCode程序員面試金典:二叉搜索樹序列
下一篇:Ubuntu20.04 + VirtualBox相關