优化音质是直播电商源码不能忽略的
最近直播电商源码在使用WebRTC进行直播推流的时候,遇到了音乐音质不好的问题,对此进行优化后,音乐音质有很大提升,因此记录下优化过程,分享出来
1. 关闭AEC,AGC,NS
因为WebRTC是专为实时视频通话设计的,所以WebRTC的语音处理算法也是专门为视频通话优化的,为了进行正常的视频通话,必须对语音进行AEC,AGC算法处理,但是AEC对人声有特殊处理,但是对音乐的背景声音处理的不好,如果进行直播的时候,使用AEC,会对音乐的背景音产生消噪,从而影响直播电商源码的音质,可以关闭iOS端的硬件AEC,AGC,NS等算法
关闭方法
在voice_processing_audio_unit.mm文件中,修改
vpio_unit_description.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
//修改为kAudioUnitSubtype_RemoteIO
vpio_unit_description.componentManufacturer = kAudioUnitManufacturer_Apple;
UInt32 enable_agc = 0;
result = AudioUnitSetProperty(vpio_unit_, kAUVoiceIOProperty_VoiceProcessingEnableAGC, kAudioUnitScope_Global, kInputBus, &enable_agc, sizeof(enable_agc));
2. 修改Opus编码算法
WebRTC中默认是采用Opus编码,Opus编码是由silk编码和celt编码合并在一起,silk编码是由skype公司开源的一种语音编码,特别适合人声,适合于Voip语音通信。celt和mp3,aac类似,适合于传输音乐。Opus编码具备以下特点:
6 kb /秒到510 kb / s的比特率
采样率从8 kHz(窄带)到48 kHz(全频)
帧大小从2.5毫秒到60毫秒
支持恒定比特率(CBR)和可变比特率(VBR)
从窄带到全频段的音频带宽
支持语音和音乐
支持单声道和立体声
支持多达255个频道(多数据流的帧)
可动态调节比特率,音频带宽和帧大小
良好的鲁棒性丢失率和数据包丢失隐藏(PLC)
浮点和定点实现
WebRTC中默认是使用Opus编码的,在SDP中有标记
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
音频采样率是48000,音频打包时间是10ms,单声道,编码采用的是Opus里面的silk编码,适合传人声,不适合传音乐,所以如果需要使用WebRTC进行直播推流,直播电商源码需要对audio编码进行修改
3. 修改声道数
在a=ftmp这一行中加入stereo=1代表双声道,stereo=0代表单声道,双声道一般用来传音乐,从WebRTC代码中可以发现,当我们设置声道数为2时,opus编码内部将使用celt, celt适合传输音乐,代码如下:
config.application = config.num_channels == 1 ? AudioEncoderOpus::kVoip : AudioEncoderOpus::kAudio;
kVoip适合于语音通话,kAudio适合于传输音乐
4. audio码流修改
在a=ftmp这一行中加入maxaveragebitrate代表接收方能接受的最大码流,单位为bit。比如maxaveragebitrate=128000代表码流为128kbps,提高audio码流可以提升音乐音质
声道数,码流等参数,可以在sdp中统一修改
a=fmtp:111 minptime=10;useinbandfec=1;stereo=1;maxaveragebitrate=128000;maxplaybackrate=48000
总结:直播电商源码修改完WebRTC这些参数,再使用WebRTC进行直播推流时,音乐等背景音的音质有了大幅提升,也没有异常的声音忽高忽低的问题了
优化音质是直播电商源码不能忽略的相关推荐
- 直播电商源码是怎样实现快速打开直播的
经常会看到,很多公司都在带宽和卡顿中抉择,想把H.265编码格式做为视频编码格式普及开来,用于直播电商源码播放,无论在TV上,还是手机上,由于很多设备不支持这种编码格式,所以往往要做适配.有人问,为什 ...
- 直播电商源码使用缓存,将面临什么问题
直播电商源码使用缓存的设计包含很多技巧,设计不当将会导致严重的后果.本文将介绍缓存使用中常见的三大问题,并给出相应的解决方案. 1. 缓存穿透 在大多数直播电商源码中,缓存的使用方式如下图所示: 当业 ...
- 直播电商源码,简述直播的实现原理
现在直播非常火爆,可以从PC或手机直播,然后从PC或是手机或是 支持HTML5的浏览器 收看.但是,你知道直播电商源码后面的技术和实现原理码? 首先,视频有它的播放协议.原则上,RTSP,RTMP,H ...
- 直播电商源码,通过vue实现直播聊天
基于vue2.0+vue-cli+vuex+vue-router+webpack+es6+wcPop等技术开发的直播电商源码聊天室vue-chatRoom,实现了直播电商源码聊天功能,新增了消息下拉刷 ...
- 直播电商源码如何实现开屏广告
直播电商源码如何实现开屏广告的相关代码 1.1 添加SplashView. 在XML布局文件中添加SplashView. Xml 代码 <?xml version="1.0" ...
- JAVA多语言多商户跨境电商源码
多语言无货源跨境电商源码是一个功能强大的电子商务平台,该平台具有许多先进的功能和特点,可以帮助用户轻松地开展跨境电商业务. 一.主要功能介绍 多语言支持:该平台支持多语言,包括英语.中文.法语.西班牙 ...
- 微信小程序电商源码:外卖小程序,电商小程序,门店类小程序,展示类小程序,批发商城小程序、分销小程序。
介绍: 1.naicha 2.xianhua 3.xingbake 4.zhubaoxiao 5.zhubaoxiao 6.majiangshangcheng 7.jiafang 8.huazhuan ...
- java版商城 springcloud+springboot+mybatis+redis+uniapp 多商户电子商务源码 直播带货源码 短视频带货源码 社交电商源码 分布式 微服务电子商务源码
涉及平台:平台管理(包含自营店面).商家端(PC端.手机端).买家平台(PC端.H5/公众号.小程序.APP端(IOS/Android).微服务平台(业务服务) 核心架构:Spring Cloud.S ...
- B2B2C分布式微服务电商源码(支持:小程序、公众号、H5、IOS、Android)
1. 涉及平台 平台管理.商家端(PC端.手机端).买家平台(H5/公众号.小程序.APP端(IOS/Android).微服务平台(业务服务) 2. 核心架构 Spring Cloud.Spring ...
最新文章
- 前端面试题整理(定期更新)
- 学习工作即游戏:游戏化生存的现实物语
- toj 3616 Add number (没想到啊~~)
- SaaS模式云数据仓库:持续保护云上数据及服务安全
- 2021高考成绩怎么查询时间北京,2021年北京高考成绩几号公布可以查询,查询时间安排...
- 如何打造一个让粉丝一见就能收钱的朋友圈
- linux虚拟机上挂载U盘
- cs231n学习笔记-激活函数-BN-参数优化
- livereload(自动刷新)
- ECCV 2018 论文下载及分析(774篇全)
- 抖音:运营与商业模式分析
- PHP学习之如何写一个项目?需求分析
- 美国大学计算机科学分支,美国大学计算机专业四大分支介绍
- python中Blowfish加密解密
- python语义分割数据标签,将数字标签转彩色标签
- 线性代数 | (3) 行列式
- mac彻底卸载idea
- IE8浏览器兼容问题(日常经验总结)
- maven编译问题之 -The POM for XXX is invalid, transitive dependencies (if any) will not be available
- vue.js bootstrap 下拉列表_Excel下拉菜单制作的小技巧
热门文章
- 008 -菲波那切数列
- 二:企业设立、经营与财务报表
- 关于e^x的部分公式和约算方法
- 骚年都2020年了你还在用EventBus吗?jetpack之liveData
- 骚话--大部分来源于抖音评论
- 根据《关于“k-means算法在流式细胞仪中细胞分类的应用”的学习笔记总结》撰写的中期报告...
- 《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...
- 千里眼摄像头支持对象存储吗_为什么建议大家使用对象存储?我总结了这六点...
- H3CS10510报Invalid MAC address处理
- Case study: IIoT effectiveness on the plant floor