有用户反馈连麦时,直播间会有电流声,后面排查发现是 webrtc 内部播放器渲染音频时,用户的播放设备不支持 48000hz 采样率(我们传输的音频采样率都是 48000hz),导致音频数据受损而出现电流音

详细过程:

用户本地的混音是通过 webrtc 内部的回调拿到的,而用户的播放设备不支持 48k,导致 webrtc 输出的混音是非 48k,远端传来的音频是 48k 的,而两个混音在进一步混音时,因为采样率不同,导致音频数据不完整

如下摘取片段,音频数据不完整的过程可以参考这篇文章:短视频中解决音视频混音出现杂音的问题

从这个示意图可以很明显的看出问题,48000Hz 重采样之后的音频 buffer size已经变小了,但是用这个 buffer 和 44100Hz 正常的 buffer 合并,那其中一个音频后面就是一段空数据,所以合成之后肯定会出现杂音的。

解决方法: 不使用播放设备默认的采样率,在 webrtc 回调中手动重采样音频

webrtc 渲染音频时遇到的问题的更多相关文章

  1. 单独编译使用WebRTC的音频处理模块

    块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...

  2. 【单独编译使用WebRTC的音频处理模块 - android】

    更新 [2015年2月15日] Bill 这段时间没有再关注 WebRTC 以及音频处理的相关信息,且我个人早已不再推荐单独编译 WebRTC 中的各个模块出来使用.实际上本文的参考价值已经很小了,甚 ...

  3. WebRTC 的音频弱网对抗之 NACK

    基础知识 音频的 NACK 机制在 WebRTC 中默认是关闭的. rtcp feedbacknack开启就可以了 WebRTC 的音频数据传输中,尽管对低延时有着很高的要求,但也实现了 NACK,以 ...

  4. Chorme浏览器渲染MathJax时出现竖线的解决方法

    Chorme浏览器渲染MathJax时出现竖线的原因分析与解决方法 查资料知,Chorme中显示MathJax时出现竖线的原因如下: 新版的Chorme浏览器在解析css时,会对其中的值进行向上取整( ...

  5. iview 动态渲染menu时active-name无效的问题

    动态渲染menu时,如果需要active-name,那么name只能绑定index,动态渲染的数组初始必须有一个空对象.否则无法使用active-name属性.注:仅限3.0版本,不排除新版本修复的可 ...

  6. 关于js渲染网页时爬取数据的思路和全过程(附源码)

    于js渲染网页时爬取数据的思路 首先可以先去用requests库访问url来测试一下能不能拿到数据,如果能拿到那么就是一个普通的网页,如果出现403类的错误代码可以在requests.get()方法里 ...

  7. iOS AVAudioPlayer播放音频时声音太小

    iOS AVAudioPlayer播放音频时声音太小 //引入AVFoundation类库,设置播放模式就可以了 do { try AVAudioSession.sharedInstance().ov ...

  8. JS指定音频audio在某个时间点进行播放,获取当前音频audio的长度,音频时长格式转化

    前言: 今天接到一个需求,需要获取某个.mp3音频文件的时间长度和指定音频audio在某个时间点进行播放(比如说这个视频有4分钟,我要让它默认从第2秒的时候开始播放),这里当然想到了H5中的audio ...

  9. webrtc的音频处理模块apm( audio processing)下载与编译出libwebrtc_audio_preprocessing.so

    webrtc代码在android和chromium项目中都有.但是android中的那个带有Android.mk,稍微修改下就能用ndk-build编译出libwebrtc_audio_preproc ...

  10. Chrome渲染Transition时页面闪动Bug

    前段时间,有同事和会员反馈使用Chrome访问淘宝首页会出现画面闪动的现象,但是我在Mac和Win下面的Chrome都无法重现这个问题,后来重装了一遍Win7下的Chrome Beta版本,终于重现了 ...

随机推荐

  1. 基于OpenJDK部署clickhouse-local镜像的快捷方法

    基于OpenJDK部署clickhouse-local镜像的快捷方法 摘要 前期搭建了一套基于OpenJDK的Clickhouse的服务端的镜像 可以简单使用dbeaver进行连接与使用. 后来发现需 ...

  2. [转帖]028.PGSQL-用户创建、表空间创建、数据库创建、schema创建、表创建、生成测试数据、指定搜索路径、

    https://www.cnblogs.com/star521/p/15054341.html  登录数据库 su postgres #注意这里postgers 前后都有空格 psql -U post ...

  3. 【转帖】【ethtool】ethtool 网卡诊断、调整工具、网卡性能优化| 解决丢包严重

    目录 即看即用 详细信息 软件简介 安装 ethtool的使用 输出详解 其他指令 将 ethtool 设置永久保存 如何使用 ethtool 优化 Linux 虚拟机网卡性能 ethtool 解决网 ...

  4. [转帖]Linux中最全shell命令&常用注意事项

    在编辑linux脚本中不断的会用到复杂的脚本编辑,写文章记录. Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 目录 推荐书籍: Linux常用命令 Linux 常用命令 在li ...

  5. Ant Design Vue分页Pagination

    <template> <div> <a-pagination show-quick-jumper v-model:current="current1" ...

  6. JS 逆向之 Hook,吃着火锅唱着歌,突然就被麻匪劫了!

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 什么是 Hook? Hook 中文译为钩子,Hook 实际上是 Windows 中提供的一种用以 ...

  7. go中异常处理流程

    在 Go 语言中,panic.recover 和 defer 是用于处理异常情况的关键字.它们通常一起使用来实现对程序错误的处理和恢复. 1. defer 语句 defer 用于在函数返回之前执行一段 ...

  8. iframe 框架技术

    隐性转发 <!doctype html> <html lang="zh_CN"> <head> <meta charset="u ...

  9. RestTemplate-postForObject详解、调用Https接口、源码解析,读懂这一篇文章就够了

    restTemplate 目录 restTemplate 1. 基本介绍 2. 常用方法分析及举例 2.1. get请求 2.2. post请求 3. springboot中使用restTemplat ...

  10. 深入浅出Java多线程(二):Java多线程类和接口

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第二篇内容:Java多线程类和接口.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代计算机系统中,多线程 ...