最近直播电商源码在使用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进行直播推流时,音乐等背景音的音质有了大幅提升,也没有异常的声音忽高忽低的问题了

优化音质是直播电商源码不能忽略的相关推荐

  1. 直播电商源码是怎样实现快速打开直播的

    经常会看到,很多公司都在带宽和卡顿中抉择,想把H.265编码格式做为视频编码格式普及开来,用于直播电商源码播放,无论在TV上,还是手机上,由于很多设备不支持这种编码格式,所以往往要做适配.有人问,为什 ...

  2. 直播电商源码使用缓存,将面临什么问题

    直播电商源码使用缓存的设计包含很多技巧,设计不当将会导致严重的后果.本文将介绍缓存使用中常见的三大问题,并给出相应的解决方案. 1. 缓存穿透 在大多数直播电商源码中,缓存的使用方式如下图所示: 当业 ...

  3. 直播电商源码,简述直播的实现原理

    现在直播非常火爆,可以从PC或手机直播,然后从PC或是手机或是 支持HTML5的浏览器 收看.但是,你知道直播电商源码后面的技术和实现原理码? 首先,视频有它的播放协议.原则上,RTSP,RTMP,H ...

  4. 直播电商源码,通过vue实现直播聊天

    基于vue2.0+vue-cli+vuex+vue-router+webpack+es6+wcPop等技术开发的直播电商源码聊天室vue-chatRoom,实现了直播电商源码聊天功能,新增了消息下拉刷 ...

  5. 直播电商源码如何实现开屏广告

    直播电商源码如何实现开屏广告的相关代码 1.1 添加SplashView. 在XML布局文件中添加SplashView. Xml 代码 <?xml version="1.0" ...

  6. JAVA多语言多商户跨境电商源码

    多语言无货源跨境电商源码是一个功能强大的电子商务平台,该平台具有许多先进的功能和特点,可以帮助用户轻松地开展跨境电商业务. 一.主要功能介绍 多语言支持:该平台支持多语言,包括英语.中文.法语.西班牙 ...

  7. 微信小程序电商源码:外卖小程序,电商小程序,门店类小程序,展示类小程序,批发商城小程序、分销小程序。

    介绍: 1.naicha 2.xianhua 3.xingbake 4.zhubaoxiao 5.zhubaoxiao 6.majiangshangcheng 7.jiafang 8.huazhuan ...

  8. java版商城 springcloud+springboot+mybatis+redis+uniapp 多商户电子商务源码 直播带货源码 短视频带货源码 社交电商源码 分布式 微服务电子商务源码

    涉及平台:平台管理(包含自营店面).商家端(PC端.手机端).买家平台(PC端.H5/公众号.小程序.APP端(IOS/Android).微服务平台(业务服务) 核心架构:Spring Cloud.S ...

  9. B2B2C分布式微服务电商源码(支持:小程序、公众号、H5、IOS、Android)

    1. 涉及平台 平台管理.商家端(PC端.手机端).买家平台(H5/公众号.小程序.APP端(IOS/Android).微服务平台(业务服务) 2. 核心架构 Spring Cloud.Spring ...

最新文章

  1. 前端面试题整理(定期更新)
  2. 学习工作即游戏:游戏化生存的现实物语
  3. toj 3616 Add number (没想到啊~~)
  4. SaaS模式云数据仓库:持续保护云上数据及服务安全
  5. 2021高考成绩怎么查询时间北京,2021年北京高考成绩几号公布可以查询,查询时间安排...
  6. 如何打造一个让粉丝一见就能收钱的朋友圈
  7. linux虚拟机上挂载U盘
  8. cs231n学习笔记-激活函数-BN-参数优化
  9. livereload(自动刷新)
  10. ECCV 2018 论文下载及分析(774篇全)
  11. 抖音:运营与商业模式分析
  12. PHP学习之如何写一个项目?需求分析
  13. 美国大学计算机科学分支,美国大学计算机专业四大分支介绍
  14. python中Blowfish加密解密
  15. python语义分割数据标签,将数字标签转彩色标签
  16. 线性代数 | (3) 行列式
  17. mac彻底卸载idea
  18. IE8浏览器兼容问题(日常经验总结)
  19. maven编译问题之 -The POM for XXX is invalid, transitive dependencies (if any) will not be available
  20. vue.js bootstrap 下拉列表_Excel下拉菜单制作的小技巧

热门文章

  1. 008 -菲波那切数列
  2. 二:企业设立、经营与财务报表
  3. 关于e^x的部分公式和约算方法
  4. 骚年都2020年了你还在用EventBus吗?jetpack之liveData
  5. 骚话--大部分来源于抖音评论
  6. 根据《关于“k-means算法在流式细胞仪中细胞分类的应用”的学习笔记总结》撰写的中期报告...
  7. 《Autosar从入门到精通-实战篇》总目录_培训教程持续更新中...
  8. 千里眼摄像头支持对象存储吗_为什么建议大家使用对象存储?我总结了这六点...
  9. H3CS10510报Invalid MAC address处理
  10. Case study: IIoT effectiveness on the plant floor