当前位置: 首页 > news >正文

流媒体服务器如何让WebRTC支持H.265,同时又能支持Web js硬解码、软解码(MSE硬解、WASM软解)

为了这一整套的解决方案,调研+研发整整花费了差不多半年多的时间,需达成的目标:

  1. 流媒体服务器端不需要将H.265转码成H.264,就能让Chrome解码播放H.265;

注意:现在很多市面上的软硬件通过转码H.265成H.264的方式来支持WebRTC,个人理解,这既费硬件又是技术的倒退!

  1. Web JS解码H.265在之前就WASM(WebAssembly)一种方式,但是后来Chrome支持了H.265的硬解码,于是,Web解码H.265就有了MSE和WebCodecs多种方式;
  2. 既然是解码播放,那肯定有支持硬件的,也有不支持硬解码H.265的,那WebAssembly软解码H.265就成为了托底的选项;
  3. WASM解码H.265也有多种模式,单线程的WASM解码模式,还有多线程WASM SIMD模式,效率上差距也是不小的;

解决方案

  1. 我们采用了H.265+AAC(音频通过转码统一成了AAC编码格式)封装成FLV格式,然后再通过WebRTC的DataChannel方式,传输到客户端;

WebRTC有VideoChannel、AudioChannel和DataChannel,原来DataChannel只是为了传输一些私有信息,现在也用来传输视频数据了,效果挺好!

  1. DataChannel传输到客户端之后,回调到上层进行类似于HTTP-FLV或者WebSocket-FLV的模式,选择MSE硬件、WebCodecs硬解,或者选择WASM软解码的方式,进行解码;
  2. WebRTC的DataChannel可以通过UDP或者TCP进行传输,完全利用了WebRTC的高效QoS策略,用户只需要做好服务端的FLV封装和客户端的FLV解码播放就可以了!!!

效果如图:
WebRTC支持H.265

WebRTC支持H.265


http://www.mrgr.cn/news/6252.html

相关文章:

  • 【已上线】C++ mysql连接池
  • 【xilinx】Vivado 成功运行Ubuntu需要哪些 文件?
  • 【JVM】JVM内存模型与操作系统内存模型(二)
  • Mysql-linux通过rpm安装、linux离线安装mysql
  • XSS-过滤特殊符号的正则绕过
  • 【HarmonyOS NEXT星河版开发实战】天气查询APP
  • 极速文件预览!轻松部署 kkFileView 于 Docker 中!
  • 汇编
  • Dragonfly S 5MP工业相机量产 机器视觉应用的新选择
  • 跟李沐学AI:目标检测、锚框
  • SpringCloudAlibaba Seata分布式事务
  • sysctl 命令设置内核参数
  • 无心剑中译莎士比亚《吾爱稀罕胜天仙》
  • 分贝通解读:减少不必要的支出浪费,企业真的能省钱
  • 牛客小白月赛99 ABCDE (fg挺典的,明天补)
  • Ansible远程自动化运维
  • 【C++】stack和queue
  • PaddleNLP 3.0 支持大语言模型开发
  • 推荐一款好用的mac解压缩软件
  • 产品经理-​​实习中的自我迭代(41)