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直播播放器的扩展功能,在好多行业用处很大,如教育类、大屏环境下多窗口播放、一对一互动等场景非常有用,感兴趣的开发者可以试试看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

千牛如何装修店铺 千牛装修店铺的教程

1、首先登录千牛卖家版,输入淘宝账号和密码。 2、在界面的横向工作栏中选择店铺管理,找到【店铺装修】选项。 千牛如何装修店铺?千牛装修店铺的教程 3、在左侧工具栏中选择需要修改的部分,目前可选择模块、配色、页头、页面、CSS等部分。…

Windows平台RTMP播放器/RTSP播放器如何在播放窗口添加OSD文字叠加

好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Github…

6款真正好用的播放器推荐

GOM player GOM player 是一款本身装有视频播放所需的解码,及占用系统资源少,并且能以最优秀的画质来观看多种格式影片的播放程序。 可以支持播放大多数当前流行的视频格式,如:MP4、AVI、WMV、MKV、MOV、FLV 等),并且…

win7系统电脑运行速度的提升方法

win7系统是一款被大多数用户们认可的好用系统,在不断的对win7系统的使用中很多用户们都在寻找win7提高电脑运行速度的方法,今天小编就为大家带来了win7系统电脑运行速度的提升方法,让我们一起来看一下吧。 win7系统电脑运行速度的提升方法 …

Windows平台Unity3d下如何同时播放多路RTSP或RTMP流

好多开发者在做AR、VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大、而且周期长,不适合快速出产品,我们认为当前最好的方式就是集…

如何修改Win11睡眠时间

近日,微软发布了 Win11 的首个预览版,所有之前已加入到 Insider Preview 的用户都能收到这个版本。该版本融入了发布会里的很多变化,但并未添加 Microsoft Teams 和安卓应用支持。相信很多朋友已经安装体验了一把。大家知道为了节省电量&…

Android平台使用Camera2(5.0+)替代过时的Camera

转自:https://forums.developer.amazon.com/articles/2707/using-camera2-to-replace-deprecated-camera-api.html From Android 5.0(API Level 21) the new Camera2 API(android.hardware.Camera2) is introduced which now gives full manual control over Andro…

RTMP播放器开发填坑之道

好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTMP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github&#xff1a…

Win11系统语言修改不了中文怎么办

一些升级了Win11系统的朋友发现升级后发现是英文版的,怎么把英文版的换成中文版的呢?下面为大家带来如何把Win11系统语言从英文变成中文,方法非常简单。 Win11系统语言修改不了中文怎么办 1、首先打开区域和语言设置(搜索),看看是否有“显…

Vscode —— 解决Vscode终端无法使用npm的命令的问题

在cmd中可以正常执行npm -v等指令,但是在vs code终端中,无法执行npm -v,node -v等指令 出现报错 解决办法👇 方法一:【右键单击Vscode】以【管理员身份运行】,【重启Vscode】 方法二:①【用户变量】的【path】添加npm所在路径的…

RTSP播放器开发填坑之道

好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTSP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github&#xff1a…

ijkplayer、VLC Player、SmartPlayer、ExoPlayer播放器比较

ijkPlayer ijkPlayer是BiliBili公司维护的一个开源工程,基于ffmpeg开发的一个播放器软件,支持Android和iOS平台,整个ijkplayer就是以ffplay为基础,如果只是使用它进行播放,集成也较为简单,使用也和MediaPl…

Win11系统设置绿色护眼模式的方法

随着Win11系统电脑的逐步推广,Win11系统在市场上的用户量也是越来越大,不少电脑办公群体也是很青睐于使用Win11系统,然而,长时间的办公容易造成视觉疲劳,为此,很多人希望把电脑的显示颜色改成”护眼绿“&am…

浏览器播放RTSP视频流几种解决方案

方案一: H5 websocket_rtsp_proxy 实现视频流直播 Streamedian 提供了一种“html5_rtsp_player websock_rtsp_proxy”的技术方案,可以通过html5的video标签直接播放RTSP的视频流。 整个架构如下图所示,分为服务器端和浏览器端两部分: 方案…

技术员联盟Win11 64位官方全新旗舰版镜像V2021.08

技术员联盟Win11 64位官方全新旗舰版镜像V2021.08以微软官方纯净版作为母盘对系统进行了全面优化更新,用户使用更加流畅顺手,轻松体验到系统的优秀性能,适用目前市场最新机型以及老旧机型,多种安装方式供用户选择,且更…

Android播放器之SurfaceView与GLSurfaceView

先看Surface Surface的官方介绍:Handle onto a raw buffer that is being managed by the screen compositor,Surface是一个raw buffer的句柄,通过它在raw buffer上进行绘制,可以通过Surface获得一个Canvas。 Canvas canvas mS…

几款知名RTMP推流模块比较:OBS VS SmartPublisher VS Flash Media Live Encoder

OBS 功能强大,几乎所有你想要的场景它都有,用起来很顺手。可以将桌面、摄像头、程序窗口通过rtmp推送到流媒体服务器上。 当然如果你是开发者,想基于OBS做二次开发,实现二次产品化的化,难度比较大,OBS代码…

中关村Win11 32位微软原版ISO V2021.08

中关村Win11 32位微软原版ISO V2021.08以微软官方原版作为母盘对系统进行了全面优化更新,支持一键化智能安装,在操作舒适性和便捷性方面进行了优化设计,流畅稳定,系统进行了全面优化,大大降低了发生蓝屏和黑屏的可能&a…

如何用轻量级RTSP服务本地生成RTSP测试URL

最近发现好多开发者都在搜索可用的RTSP测试URL,目前公网实际可测试的RTSP URL非常少,即便是可用,分辨率和网络也非常差,不适合长期测试。 针对此,我们的建议是最好直接网上买个海康或大华的摄像头,一般来说…

Windows平台RTSP|RTMP播放端SDK集成说明

2.1 demo说明 大牛直播SDK提供C/C#两套接口,对外提供32/64位debug/release库,C和C#接口一一对应,C#接口比C接口增加前缀NT_PB_;WIN-PlayerSDK-CPP-Demo:播放端SDK对应的C接口的demo;WIN-PlayerSDK-CSharp-…