惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog
T
The Blog of Author Tim Ferriss
量子位
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
小众软件
小众软件
Recent Announcements
Recent Announcements
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
美团技术团队
G
Google Developers Blog
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
IT之家
IT之家
Microsoft Security Blog
Microsoft Security Blog
博客园 - 聂微东
Last Week in AI
Last Week in AI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Help Net Security

轶哥博客

blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog blog
blog
2020-09-01 · via 轶哥博客

昨日遇到客户反馈WebRTC在安卓平台出现有视频无声音的故障。

1061598934819.pichd.jpg

系统运行在Android 7.1平台,是小型公证一体机。采用自编译Chromium内核封装Web页面混合开发实现。

1051598934818.pichd.jpg

在排除硬件问题后,测试WebRTC视频系统可以在“PC-PC”下正常运行,在“PC-Android”下,PC浏览器中能听到Android端传过来的声音,画面也正常,但是Android端只能看到画面,无法听到PC端传输过来的声音。

问题解决过程

通过添加按钮(产生交互),避免Chrome浏览器无法自动播放音频视频的问题,问题仍然存在。

同一套WebRTC 视频系统在同样的设备中已经出货很多台了,视频系统一直稳定运行。因此怀疑主板生产批次发生变化,主板厂商可能新批次中调整了硬件(固件相同。询问主板供应商得到回复是没有更改过硬件,但我们仍然没有完全排除硬件原因)。

WebRTC SDP配置中,配置的视频编码是VP8,音频是OPUS,初步怀疑音频编码参数在此批次Android设备中不兼容。

经过调整SDP配置,发现问题仍然存在。

更换了H264及音频参数,更换软解内核、尝试硬解,发现问题仍然存在。

升级了Chromium内核84版本,问题仍然存在。

至此,不得不怀疑是软件出现了细微差别导致的音频异常。

问题解决方案

最终,根据经验对Android端前端代码进行微调,发现问题在于remote流绑定的video标签被动态插入导致音频异常。

异常代码:

Node.appendChild(event.mediaElement)

修改后正常的代码:

// <video id="other-video" playsinline autoplay></video>

var otherVideos = document.querySelector('#other-video')
otherVideos.srcObject = event.stream

简单来说,即<video>标签需要直接写在HTML中,并且通过srcObject方式将remote流绑定到该标签。如果是多方通话,需要插入多个remote流,可以先appendChild组件,然后再修改其srcObject参数。