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

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

时间:2024-08-22 16:54:09浏览次数:13  
标签:H.265 硬解 硬软 解码 DataChannel FLV WASM WebRTC

为了实现这一全面的解决方案,我们投入了近半年的时间进行调研与研发。我们的主要目标是:让流媒体服务器能够直接传输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解码播放,即可享受流畅的视频传输体验。

效果如图如下:

标签:H.265,硬解,硬软,解码,DataChannel,FLV,WASM,WebRTC
From: https://www.cnblogs.com/easycvr/p/18374262

相关文章

  • 创新实践:流媒体服务器如何推动WebRTC支持H.265及JS硬软解码(MSE硬解、WASM软解)
    为了实现这一全面的解决方案,我们投入了近半年的时间进行调研与研发。我们的主要目标是:让流媒体服务器能够直接传输H.265编码的视频,而无需将其转码为H.264,从而使Chrome浏览器能够无缝解码并播放H.265视频。值得注意的是,目前市场上许多软硬件产品仍采用将H.265转码为H.264的......
  • 视频汇聚EasyCVR平台H.265视频转码技术介绍、特点解析及应用
    随着社会视频资源的不断增加,城市“一网统管”等平台的视频应用也愈加频繁,视频转码并发成倍增加。但是很多城市现有的视频平台无法纳管更多的视频资源以及提供更多的视频转码并发能力。因此,为强化支撑“一网统管”平台开展视频类业务应用,需要对视频应用平台进行扩容及改造,满足海量......
  • 新版网页无插件H.265播放器EasyPlayer.js如何测试demo视频?
    H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,支持H.264与H.265编码格式,性能稳定、播放流畅;支持WebSocket-FLV、HTTP-FLV,HLS(m3u8)、WebRTC、WS-FMP4、HTTP-FMP4等格式的视频流,并且已实现网页端实时录像、在iOS上实现低延时......
  • 编译ffmpeg 并支持 NVIDIA 硬解码
    1.简述所谓硬件解码就是利用专用的硬件(比如说nvenc)进行解码区别与利用通用计算单元进行解码(CPU,cuda)2.所需要的sdkcuda11.1nvccffmpeg5.1.2nv-codec-header11.1.5.2下载位置4.安装ffnvcodec省略安装cuda和nvcc的方法显卡驱动最好大于430.1.4安装ffnvc......
  • 使用 MediaCodec 在 Android 上进行硬解码
    要使用MediaCodec在Android上进行硬解码,并获取RGBA数据,你可以按照以下步骤进行操作:创建MediaExtractor对象并设置要解码的MP4文件路径:MediaExtractorextractor=newMediaExtractor();extractor.setDataSource(filePath);根据需要选择音频或视频轨道:inttrackCo......
  • H.265视频直播点播录像EasyPlayer.js流媒体播放器用户常见问题及解答
    EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。今天我们来汇总下用户常见的几个问题及解答。1、EasyPlayer.js播放多路H.265视频时,CPU直接被占满该如何处理?答:因为H.265解码比较占......
  • 你知道h.265吧?但关于AV1编码格式你也来了解一下吗?
    介绍一下av1格式AV1(AOMediaVideo1)是一种开放、免版税的视频编码格式,旨在用于视频传输和存储。它由开放媒体联盟(AllianceforOpenMedia,AOM)开发,这是一个由Google、Mozilla、Cisco、Amazon、Intel、Microsoft、Netflix等多家公司组成的联盟。AV1旨在取代VP9并成为与HEVC(H.265)......
  • ffmpeg 转码 H.265为 H.264
    树莓派3上omxplayer无法播放h.265编码的.mp4文件,需要进行转码.参考:  https://superuser.com/questions/1380946/how-do-i-convert-10-bit-h-265-hevc-videos-to-h-264-without-quality-loss单个文件:ffmpeg.exe-ixxx.mp4-map0-c:vlibx264-crf18-vfformat=......
  • windows之FFmpeg 软、硬解码
    设备支持qsv硬件加速,则虚线判断是否可以支持硬解码namespaceCoder.FFmpeg{///<summary>///视频解码器///</summary>publicunsafeclassFFmpegVideoDecoder:IDisposable{#region私有变量//格式转换器privaterea......
  • oracle 发生硬解析的常见原因
     经常有SQL的执行计划变差了,导致出现了性能问题,为什么会解析出了新的执行计划?首先可以肯定突然出现了新的执行计划,表明SQL进行了重新硬解析(注意重新硬解析不一定产生新的执行计划),那么为什么SQL需要重新硬解析呢?今天就列举几种常见的原因: 1.自动收集统计信息 为了保证sql......