介绍移动端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播放器实时音量调节的更多相关文章

  1. Android平台RTMP/RTSP播放器开发系列--解码和绘制

    本文主要抛砖引玉,粗略介绍下Android平台RTMP/RTSP播放器中解码和绘制相关的部分(Github). 解码 提到解码,大家都知道软硬解,甚至一些公司觉得硬解码已经足够通用,慢慢抛弃软解了,如 ...

  2. Windows平台RTMP/RTSP播放器实现实时音量调节

    为什么要做实时音量调节 RTMP或RTSP直播播放音量调节,主要用于多实例(多窗口)播放场景下,比如同时播放4路RTMP或RTSP流,如果音频全部打开,几路audio同时打开,可能会影响用户体验,我们 ...

  3. Android流媒体开发之路三:基于NDK开发Android平台RTSP播放器

    基于NDK开发Android平台RTSP播放器 最近做了不少android端的开发,有推流.播放.直播.对讲等各种应用,做了RTMP.RTSP.HTTP-FLV.自定义等各种协议,还是有不少收获和心得 ...

  4. 如何实现Windows平台RTMP播放器/RTSP播放器播放窗口添加OSD文字叠加

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

  5. EasyPlayer RTSP播放器运行出现: Unable to load DLL 找不到指定的模块。exception from HRESULT 0x8007007E 解决方案

    最近有EasyPlayer RTSP播放器的开发者反馈,在一台新装的Windows Server 2008的操作系统上运行EasyPlayer RTSP播放器出现"Unable to loa ...

  6. RTSP播放器开发填坑之道

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

  7. 基于Live555,ffmpeg的RTSP播放器直播与点播

    基于Live555,ffmpeg的RTSP播放器直播与点播 多路RTSP高清视频播放器下载地址:http://download.csdn.net/detail/u011352914/6604437多路 ...

  8. EasyPlayer RTSP播放器:一个适用于安防行业的工具利器(EasyPlayer Windows v2.0.17.0709)

    本文转自EasyDarwin开源团队成员Sword的博客:http://blog.csdn.net/swordtwelve EasyPlayer(Windows) v2.0.17.0709版本又更新发 ...

  9. Android应用--简、美音乐播放器增加音量控制

    Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...

随机推荐

  1. 【Github】 Github修改仓库的基本信息

    前言 我们通常在刚开始了解学习使用github时,一般都是测试的使用,有时我们向里面添加了一些代买,如果想要修改信息并且是删除仓库重新创建提交,可以采用下面方法修改仓库信息,名称.描述等. 修改仓库描 ...

  2. BUUCTF-签到题

    签到题 很简单写在介绍里面了.

  3. TypeScript(7)泛型

    泛型 指在定义函数.接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性. 引入 下面创建一个函数, 实现功能: 根据指定的数量 count 和数据 value , 创建一个包 ...

  4. webpack中文api

    1.      简介 1.Plugins://插件 webpack has a rich plugin interface.Most of the features are internal plug ...

  5. EasyExcel导出创建Excel下拉框

    话不多说,上才艺. 下面代码粘贴即用 /** * * 导出表格带下拉框 */ @GetMapping("exportBox") public void export(HttpSer ...

  6. IDEA中Maven Project所在位置

    难免有小伙伴找不着这个在哪. 一.首先就是可以在下面这个位置查询到: 二.如果找不着,那么在这里找: 三.如果还找不到,那就没有是你刚导入的项目没有Add Maven, 下面这个图是我Add  Mav ...

  7. Unsupported major.minor version 52.0 (unable to load class org.apache.kafka.clients.producer.Produce异常解决方法

    在控制台输入java -version,查看自己的版本是多少,我的查出来是1.8的.随后将服务器上的改为1.8的就可以了.

  8. 常用API(Java)

    常用API Object toString方法 场景:当我们使用toString方法想要输出对象变量时,官方提供的toString方法会直接输出对象所在的地址,而不是我们想要的对象变量,所以我们要把t ...

  9. 04 MySQL_数据相关的SQL

    字符编码问题: 如果使用Windows电脑SQL语句中写中文报错的话,通过以下指令解决 set names gbk; 判空NULL问题: 判值用=,判空用is xxx = 非空值; xxx is nu ...

  10. Docker安装及基础命令

    一.docker安装 1.安装docker #关闭防火墙和selinux systemctl stop firewalld.service setenforce 0  ​ #安装依赖包 yum ins ...