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() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public 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播放器实时音量调节的更多相关文章
- Android平台RTMP/RTSP播放器开发系列--解码和绘制
本文主要抛砖引玉,粗略介绍下Android平台RTMP/RTSP播放器中解码和绘制相关的部分(Github). 解码 提到解码,大家都知道软硬解,甚至一些公司觉得硬解码已经足够通用,慢慢抛弃软解了,如 ...
- Windows平台RTMP/RTSP播放器实现实时音量调节
为什么要做实时音量调节 RTMP或RTSP直播播放音量调节,主要用于多实例(多窗口)播放场景下,比如同时播放4路RTMP或RTSP流,如果音频全部打开,几路audio同时打开,可能会影响用户体验,我们 ...
- Android流媒体开发之路三:基于NDK开发Android平台RTSP播放器
基于NDK开发Android平台RTSP播放器 最近做了不少android端的开发,有推流.播放.直播.对讲等各种应用,做了RTMP.RTSP.HTTP-FLV.自定义等各种协议,还是有不少收获和心得 ...
- 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加
好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Git ...
- EasyPlayer RTSP播放器运行出现: Unable to load DLL 找不到指定的模块。exception from HRESULT 0x8007007E 解决方案
最近有EasyPlayer RTSP播放器的开发者反馈,在一台新装的Windows Server 2008的操作系统上运行EasyPlayer RTSP播放器出现"Unable to loa ...
- RTSP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTSP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1. 低延 ...
- 基于Live555,ffmpeg的RTSP播放器直播与点播
基于Live555,ffmpeg的RTSP播放器直播与点播 多路RTSP高清视频播放器下载地址:http://download.csdn.net/detail/u011352914/6604437多路 ...
- EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)
本文转自EasyDarwin开源团队成员Sword的博客:http://blog.csdn.net/swordtwelve EasyPlayer(Windows) v2.0.17.0709版本又更新发 ...
- Android应用--简、美音乐播放器增加音量控制
Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...
随机推荐
- CVPR2022 | 可精简域适应
前言 在本文中,作者引入了一个简单的框架,即Slimmable Domain Adaptation,以通过权重共享模型库改进跨域泛化,从中可以对不同容量的模型进行采样,以适应不同的精度效率权衡.此外, ...
- UiPath循环活动For Each的介绍和使用
一.For Each的介绍 For Each:循环迭代一个列表.数组.或其他类型的集合, 可以遍历并分别处理每条信息 二.For Each在UiPath中的使用 1. 打开设计器,在设计库中新建一个 ...
- 端口被占用的问题解决 Web server failed to start. Port ×× was already in use
出现此问题是端口被占用了,只需要关闭正在使用的端口就行 解决思路: 1.在服务器中更改port端口号,改为不冲突,没有被占用的端口. 2.找出被占用的端口,结束被占用的端口 解决结束被占用的端口的方法 ...
- Integer.MAX_VALUE 和 Integer.MIN_VALUE
在源码中可以看出其对应的值 Integer.MAX_VALUE是2^31 -1 = 2147483647 Integer.MIN_VALUE是-2^31 = -2147483648
- HTTP Status 405 - Request method 'GET' not supported?(尚硅谷Restful案例练习关于Delete方法出现的错误)
哈罗大家好,最近在如火如荼的学习java开发----Spring系列框架,当学习到SpringMVC,动手实践RESTFUL案例时,发现了以上报错405,get请求方法没有被支持. 首先第一步,我查看 ...
- Redis基础课程讲义
Redis基础 课程内容 Redis入门 Redis数据类型 Redis常用命令 在Java中操作Redis 1. 前言 1.1 什么是Redis Redis是一个基于内存的key-value结构数据 ...
- 使用开源Cesium+Vue实现倾斜摄影三维展示
准备工作 VUE开发工具:Visual studio Code 倾斜摄影转换工具:CesiumLab-下载地址:http://www.cesiumlab.com/ 三维显示:Cesium,api参考网 ...
- SpringBoot集成文件 - 集成POI之Excel导入导出
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能.本文主要介绍通过Spr ...
- Trie树模板1字符串统计
Trie树模板1字符串统计 我们首先来了解一下字典树,首先看一下一张字典树的图片 字典树就是一个可以高效存储.查找字符串的树,比如上面这个字典树就是存储abc,acb,bac的字典树. 1.插入操作( ...
- 算法竞赛进阶指南 0x43 线段树
目录 线段树简介 线段树的简单代码实现 建树代码 修改操作 查询操作 线段树的查询操作的时间复杂度分析: AcWing245. 你能回答这些问题吗 思路 代码[时间复杂度:\(O( \space(N+ ...