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

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
LINUX DO - 热门话题
S
Secure Thoughts
TaoSecurity Blog
TaoSecurity Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threat Research - Cisco Blogs
AI
AI
B
Blog RSS Feed
S
Schneier on Security
雷峰网
雷峰网
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
罗磊的独立博客
有赞技术团队
有赞技术团队
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
博客园 - Franky
Attack and Defense Labs
Attack and Defense Labs
The Cloudflare Blog
Webroot Blog
Webroot Blog
Last Week in AI
Last Week in AI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - 叶小钗
美团技术团队
L
Lohrmann on Cybersecurity
T
The Blog of Author Tim Ferriss
The Last Watchdog
The Last Watchdog
T
Troy Hunt's Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
Know Your Adversary
Know Your Adversary
O
OpenAI News
博客园 - 【当耐特】
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cybersecurity and Infrastructure Security Agency CISA
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
PCI Perspectives
PCI Perspectives
H
Heimdal Security Blog
I
InfoQ
GbyAI
GbyAI
T
Threatpost
C
Cisco Blogs

轶哥博客

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 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 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 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参数。