浏览器支持H.265解码总结

浏览器支持H.265解码总结文章目录引言问题解决方案3.1方案1:开发自己的浏览器3.2方案2:前端JS解码+canvas显示3.3方案3:前端WebAssembly转码+video显示3.4方案4:前端W

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

文章目录

  1. 引言
  2. 问题
  3. 解决方案
    3.1 方案1:开发自己的浏览器
    3.2 方案2:前端JS解码+canvas显示
    3.3 方案3:前端WebAssembly转码+video显示
    3.4 方案4:前端WebAssembly解码+canvas显示
    3.5 总结
  4. 相关资料
  5. 参考资料
  6. 引言
    项目要求在浏览器上支持H265视频,但即使当前最新的Chrome 85.0.4183.121版本也还不支持H265的解码。

那么,在浏览器上能不能解决H265的解码及显示呢?答案是肯定的。

  1. 问题
    浏览器上支持H265,需要在浏览器上解决两个问题:

解码H265视频流
显示H265视频流
3. 解决方案
经过一番网络搜索和研究,大致有以下4种方案:

3.1 方案1:开发自己的浏览器
开发自己的浏览器

在底层实现支持H265解码
在 video 标签支持H265视频流的显示
目前公司已开发了自己的浏览器,基于Chrome 83进行开发,并增加了FFmpeg对HEVC的编解码,经测试能完美解决H265的编解码及显示。但由于存在版权风险,目前只能内部使用。

该方案可行,在测试机(i7-9700/32G)上播放16路的H265视频,整体比较流畅,但其它主流浏览器还是不支持H265,还需要研究不支持H265浏览器的解决方案。

3.2 方案2:前端JS解码+canvas显示
相关文档:Web端H.265播放器研发解密
https://blog.csdn.net/weixin_34379433/article/details/89535511

示例
https://sparkmorry.github.io/mse-learning/h265/
https://github.com/sparkmorry/mse-learning

该方案测试下来,JS解码相比较WebAssembly的解码方案,从性能来看会比较差,放弃。

3.3 方案3:前端WebAssembly转码+video显示
从ffmpegwasm上看到的一个转码示例,由于video标签不能播放H265的视频,所以先将H265视频转出H264,然后就可以通过video标签播放了

示例
https://github.com/ffmpegwasm/ffmpeg.wasm/blob/master/examples/browser/transcode.html

该方案测试下来,几秒的视频转码为H264需要近1分钟的时间,性能达不到要求,放弃。

3.4 方案4:前端WebAssembly解码+canvas显示
相关文档:Web端H.265播放器研发解密
https://blog.csdn.net/weixin_34379433/article/details/89535511

相关示例:H265播放器
(1)https://g.alicdn.com/videox/mp4-h265/1.0.2/index.html

(2)https://static-assets.cyt-rain.cn/h265/index.html

一个比较好的h265播放器
https://github.com/goldvideo/h265player

基于WASM的H265 Web播放器

文档 https://www.pianshen.com/article/3192218495/
源码 https://github.com/sonysuqin/WasmVideoPlayer
示例 https://roblin.cn/wasm/
该方案测试下来,该方案个人觉得是性能比较好的方案,在测试机(i7-9700/32G)上播放6路的H265视频,整体比较流畅。

3.5 总结
浏览器支持H265解码,初定方案:

支持H265的浏览器,如:科达浏览器,则直接使用浏览器自带的解码方案进行解码(硬解码或软解码),然后通过video标签显示出来;

不支持H265的浏览器,则采用WebAssembly技术,将FFmpeg编译为wasm,收到H265码流时,调用FFmpeg进行解码,然后通过canvas来显示视频画面;

  1. 相关资料
    janus-gateway 关于AV1和H265的协商
    https://github.com/meetecho/janus-gateway/pull/2120

How to enable HEVC/H265 and AV1 in #webrtc in your browser
https://webrtcbydralex.com/index.php/2020/04/28/how-to-enable-hevc-h265-and-av1-in-webrtc-in-your-browser/

  1. 参考资料
    Chromium媒体元素源码
    https://github.com/chromium/chromium/tree/master/media

WebAssembly
https://webassembly.org/

优秀的开源视音频处理框架FFmpeg
https://www.ffmpeg.org/
https://github.com/FFmpeg/FFmpeg
https://github.com/ffmpegwasm/ffmpeg.wasm

基于LLVM编译的WebAssembly打包工具集Emscripten
https://emscripten.org/index.html

基于WebAssembly的ogg播放器
https://github.com/brion/ogv.js

基于FFmpeg的简单播放器
https://github.com/leixiaohua1020/simplest_ffmpeg_player
from:https://blog.csdn.net/cgs1999/article/details/108847894

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/167493.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c语言函数指针的用法_函数指针作为形参

    c语言函数指针的用法_函数指针作为形参前言函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。今天这里只讲两…

  • idea最新激活码2021(JetBrains全家桶)

    (idea最新激活码2021)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • Java的特点[通俗易懂]

    Java的特点[通俗易懂]Java是一种“简单”、面向对象、分布式、解释型、健壮、安全、体系结构中立、可移植、高性能和动态的编程语言。简单:Java的设计目的是让专业程序员觉得既易学又好用。假设你有编程经历,你将不觉得Java难掌握,如果你已经理解面向对象编程的基本概念,学习Java见更加容易。面向对象:面向对象是现代编程语言的重要特征之一,面向对象技术极大的提高了人们的软件开发能力。分布

  • 各种技术网站的网址

    各种技术网站的网址http://www.eclipse.com/http://www.apache.org

  • 台式机网线连接笔记本通过wifi上网

    台式机网线连接笔记本通过wifi上网台式机网线连接笔记本通过wifi上网完整方案有时台式机会突然断网,网线没问题,笔记本没问题,问题出在台式机的ip上。完整方案1、网线两端连接笔记本和台式机。以前需要用交叉网线,但是现在的网线好像不作区分了,都能用。2、笔记本端WiFi连接网络3、wlan网络属性勾选网络共享,如果有多个网络,框里选择以太网。4、笔记本的以太网属性中,记下ip地址和子网掩码5、在台式机的以太网属性中,默认网关设置与上面的ip地址相同,因为子网掩码前三位都是255,所以台式机的ip地址前三位与网关相同,后一位好

  • nginx 实现动静分离访问项目资源

    nginx 实现动静分离访问项目资源nginx动静分离访问可以将一些css,js,img,html等一些静态资源没必要去让tomcat去加载好处是减少tomcat压力,提高响应速度,让tomcat只去处理跟数据库打交道的请求项目结构(图片) 1页面图片展示  2nginx.confg配置  #设置tomcat集群 upstreamlocal{ #i…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号