创新实践:流媒体服务器如何推动WebRTC支持H.265及JS硬软解码(MSE硬解、WASM软解)

为了实现这一全面的解决方案,我们投入了近半年的时间进行调研与研发。我们的主要目标是:让流媒体服务器能够直接传输H.265编码的视频,而无需将其转码为H.264,从而使Chrome浏览器能够无缝解码并播放H.265视频。

值得注意的是,目前市场上许多软硬件产品仍采用将H.265转码为H.264的方式来支持WebRTC。然而,在我看来,这种做法不仅增加了硬件负担,也代表了技术的一种倒退,因为它没有充分利用H.265的高效编码优势。

之前,Web JS通过WASM(WebAssembly)实现H.265解码,但随后Chrome浏览器加入了H.265的硬解码支持,使得Web解码H.265的方法扩展到了包括MSE和WebCodecs在内的多种选择。

在解码播放的场景中,既有支持硬件加速的,也有不支持H.265硬解码的情况。因此,WASM的软解码H.265成为了一个基础且可靠的备选方案。

对于WASM解码H.265,存在多种模式可选,包括单线程WASM解码模式以及更高效的多线程WASM SIMD模式,两者在效率上存在显著差异。

解决方案

我们采取了将视频以H.265编码并搭配AAC音频(所有音频均统一转码为AAC格式)封装成FLV格式,随后利用WebRTC的DataChannel功能,高效地将这些数据传输至客户端。

WebRTC原本设计了VideoChannel、AudioChannel和DataChannel,其中DataChannel最初主要用于传输控制信令或私有信息。然而,随着技术的发展,DataChannel现已被创新性地用于视频数据的传输,且实践表明,这种传输方式效果良好。

当DataChannel将数据传输到客户端后,这些数据会被回调至上层,进而采用类似HTTP-FLV或WebSocket-FLV的模式进行处理。在这一阶段,可以选择使用MSE硬件加速、WebCodecs硬解码,或是备选的WASM软解码方式来进行视频解码。

值得一提的是,WebRTC的DataChannel支持通过UDP或TCP进行数据传输,充分利用了WebRTC的高效QoS(服务质量)策略,确保数据传输的稳定性和效率。因此,用户只需专注于服务端的FLV封装和客户端的FLV解码播放,即可享受流畅的视频传输体验。

效果如图如下:

相关推荐
ai产品老杨几秒前
协议破壁与流媒体重构:基于 GB28181/RTSP 的企业级视频统一接入实战
重构·音视频
驱动小百科8 分钟前
realtek高清晰音频管理器下载及安装教程(含五种方法)
音视频·高清晰音频管理器下载·realtek高清晰音频管理器·realtek音频驱动安装
这辈子谁会真的心疼你11 分钟前
怎么修改视频的拍摄信息?详细的修改过程
java·服务器·音视频
琪伦的工具库14 分钟前
批量去除降低视频声音工具:支持四种音频处理模式的批量视频音频处理方案
音视频
琪伦的工具库34 分钟前
批量视频加图片水印工具使用指南
音视频
EasyDSS36 分钟前
EasyDSS面向政务/金融/军工的企业级私有化融媒体与视频会议平台设计方案
音视频·ai大模型·语音转写·stt
愚公搬代码40 分钟前
【愚公系列】《剪映+DeepSeek+即梦:短视频制作》036-合成:开启视觉冲击魔法(画中画)
音视频
m0_6948455740 分钟前
WePY是什么?小程序组件化开发框架实战教程
服务器·docker·小程序·开源·github
EasyDSS40 分钟前
EasyDSS校园数字化WebRTC私有化部署企业级融媒体系统设计方案解析
webrtc·媒体·ai大模型·m3u8·语音转写·点播技术