Android、iOS平台RTMP/RTSP播放器实现实时音量调节
介紹移動端RTMP、RTSP播放器實時音量調節之前,我們之前也寫過,為什么windows播放端加這樣的接口,windows端播放器在多窗口大屏顯示的場景下尤其需要,盡管我們老早就有了實時靜音接口,相對實時靜音來說,播放端實時音量調節粒度更細,從[0, 100],用戶體驗更好。
為什么要做實時音量調節
RTMP或RTSP直播播放音量調節,主要用于多實例(多窗口)播放場景下,比如同時播放4路RTMP或RTSP流,如果音頻全部打開,幾路audio同時打開,可能會影響用戶體驗,我們通用的做法是支持播放端實時靜音,更細粒度的做法是可以實時調節每一路RTMP/RTSP流的音量,當然,另外一個好處就是,“盡可能少的調節全局音量”,避免給系統帶來不必要的“麻煩”。
音量調節接口設計
RTMP或RTSP直播播放端音量調節功能設計主要考慮到一點,和市面通用的本地播放器或點播播放器功能對齊(如VLC、PotPlayer等),音量可以實時調整即可,本文以大牛直播SDK的移動端平臺RTSP直播播放SDK/RTMP直播播放SDK為例(具體可參照 Github),簡單介紹下相關的接口設計和用法。
接口設計-Android平臺
/*** 設置播放音量** @param handle: return value from SmartPlayerOpen()** @param volume: 范圍是[0, 100], 0是靜音,100是最大音量, 默認是100** @return {0} if successful*/public native int SmartPlayerSetAudioVolume(long handle, int volume);接口設計-iOS平臺
/*** 設置播放音量** @param volume 范圍是[0, 100], 0是靜音,100是最大音量, 默認是100** @return {0} if successful*/ - (NSInteger)SmartPlayerSetAudioVolume:(NSInteger)volume;移動端接口調用實例
demo以SeekBar控件為例,音量調節力度,設置到[0, 100], 設置為0時,實時靜音,設置為100時,默認原音量輸出,具體調用如下:
Android平臺:
audioVolumeBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {@Overridepublic void onProgressChanged(SeekBar seekBar, int i, boolean b) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {curAudioVolume = seekBar.getProgress();audioVolumeText.setText("當前音量: " + curAudioVolume);if(playerHandle != 0){libPlayer.SmartPlayerSetAudioVolume(playerHandle, curAudioVolume);}}});iOS平臺:
//實時音量audioVolumeSlider = [[UISlider alloc] initWithFrame:CGRectMake(45, screen_height_/2 + 50 + 30, 120, 20)]; //初始化audioVolumeSlider.center = CGPointMake(self.view.frame.size.width / 2 + 120, audioVolumeSlider.frame.origin.y + audioVolumeSlider.frame.size.height / 2);audioVolumeSlider.minimumValue = 0; //指定可變最小值audioVolumeSlider.maximumValue = 100; //指定可變最大值audioVolumeSlider.value = 100; //指定初始值audioVolumeSlider.thumbTintColor = [UIColor whiteColor];// 設置滑塊已經劃過區域的顏色audioVolumeSlider.minimumTrackTintColor = [UIColor greenColor];// 設置滑塊還未劃過區域的顏色audioVolumeSlider.maximumTrackTintColor = [UIColor redColor];audioVolumeSlider.continuous = NO;[audioVolumeSlider addTarget:self action:@selector(updateAudioVolume:) forControlEvents:UIControlEventValueChanged]; //設置響應事件[self.view addSubview:audioVolumeSlider]; - (void)updateAudioVolume:(id)sender {//添加響應事件float f = audioVolumeSlider.value; //讀取滑塊的值NSString* curVolume = [NSString stringWithFormat:@"%ld",(NSInteger)f];_textCurVolumeLabel.text = @"當前音量:";_textCurVolumeLabel.text = [_textCurVolumeLabel.text stringByAppendingString:curVolume];[_smart_player_sdk SmartPlayerSetAudioVolume:(NSInteger)f]; }實時音量調節作為RTSP或RTMP直播播放器的擴展功能,在好多行業用處很大,如教育類、大屏環境下多窗口播放、一對一互動等場景非常有用,感興趣的開發者可以試試看。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Android、iOS平台RTMP/RTSP播放器实现实时音量调节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】Python中的经典时
- 下一篇: Android平台实现Unity3D下R