chrome播放webRTC的H265视频方法
需求描述
最近有需求实现浏览器直接播放摄像头视频
鉴于Camera本身支持了rtsp流,本想web直接播放rtsp,但是还不行,搜了一下webRTC实现的效果和延迟会好一些。于是就使用了mediaMTX转了下rtsp的流,变为webRTC。
随便写了个h5页面对视频进行播放,使用下面代码的话替换一下src地址即可
点击查看代码
<!DOCTYPE html>
<html>
<head>
<title>WebRTC Video Stream Example</title>
<style>
#video-frame {
width: 640px;
height: 480px;
border: 1px solid black;
}
</style>
</head>
<body>
<div>
<iframe id="webrtc-frame" src="http://172.16.1.28:8889/stream" width="1280" height="720" scrolling="no" frameborder="0" allowfullscreen></iframe>
<button id="fullscreen-button">Toggle Fullscreen</button>
</div>
<script>
var iframeElement = document.getElementById("webrtc-frame");
function enterFullscreen() {
if (iframeElement.requestFullscreen) {
iframeElement.requestFullscreen();
} else if (iframeElement.mozRequestFullScreen) {
iframeElement.mozRequestFullScreen();
} else if (iframeElement.webkitRequestFullscreen) {
iframeElement.webkitRequestFullscreen();
} else if (iframeElement.msRequestFullscreen) {
iframeElement.msRequestFullscreen();
}
}
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
}
document.getElementById("fullscreen-button").addEventListener("click", function() {
if (isFullScreen()) {
exitFullscreen();
} else {
enterFullscreen();
}
});
function isFullScreen() {
return document.fullscreenElement ||
document.mozFullScreenElement ||
document.webkitFullscreenElement ||
document.msFullscreenElement;
}
</script>
</body>
</html>
报错排查
上面代码没啥问题第一个摄像头正常播放,但加了个其他的摄像头却不行,一直报错
the stream doesn't contain any supported codec, which are currently AV1, VP9, VP8, H264, Opus, G722, G711, LPCM, retrying in some seconds
排查了下发现:
新的摄像头推的是h265的流,而mediaMTX版本193还不支持,看了下最新版29天前刚刚更新,已经支持h265了,于是升级了下版本就解决掉了。
紧接着下一个报错就来了:
[WebRTC] [session 03d8bba9] closed: codecs not supported by client
Emmmmmm,这一打眼看就是客户端的事情呗,难道我的chrome有问题?
于是看了别的博客写了127版本就支持了WebRTC的h265解码,只需要加参数就行了

但是试过依然不行。。。。。
于是依次尝试:
1、排查是否是硬件不支持
使用DXVAChecker检测是否是硬件本身不支持的原因,发现是有hevc解码功能
2、开启/关闭chrome的硬件加速模式
手动切换chrome://flags中的decode的enabled/disabled模式,发现硬件加速模式已经开启了
3、查看chrome://gpu
其中Video Acceleration Information确实发现没有h265相关信息
解决方案
gayhub中找到对应的chrome浏览器内核chromium
链接: https://github.com/StaZhu/enable-chromium-hevc-hardware-decoding/releases
直接找对应的版本下载,安装成功后是这样的

然后打开运行直接播放了
最后的最后,纠结的是浏览器啥时候能普遍支持啊。。。。。
chrome播放webRTC的H265视频方法的更多相关文章
- 空间主页播放任意FLV格式视频方法
把文件上传到QQ网络硬盘 打开 硬盘 的 管理 选项 然后它会打开QQ邮箱的文件中转站 找到你要的视频文件 点击下载它 这里建议你使用搜狗浏览器打开网页 来到下载按钮点击下载,在弹出的对话框中选择 ...
- 转一下大牛的嵌入web页播放视频方法(转)
来自:http://www.cnblogs.com/bandry/archive/2006/10/11/526229.html 在Web页中嵌入Media Player的方法比较简单,只要用HTML中 ...
- ios上视频与音乐合成后出现播放兼容问题的解决方法
近期EasyDarwin开源流媒体团队EasyVideoRecorder小组同学Carl在支持一款短视频应用上线时,遇到一个问题:我们在IOS上合成"图片+音乐"成为视频之后,在P ...
- 可以用WebRTC来做视频直播吗?
https://www.zhihu.com/question/25497090 作者:韦易笑链接:https://www.zhihu.com/question/25497090/answer/72 ...
- 使用WebRTC搭建前端视频聊天室——点对点通信篇
WebRTC给我们带来了浏览器中的视频.音频聊天体验.但个人认为,它最实用的特性莫过于DataChannel——在浏览器之间建立一个点对点的数据通道.在DataChannel之前,浏览器到浏览器的数据 ...
- 使用WebRTC搭建前端视频聊天室——信令篇
博客原文地址 建议看这篇之前先看一下使用WebRTC搭建前端视频聊天室——入门篇 如果需要搭建实例的话可以参照SkyRTC-demo:github地址 其中使用了两个库:SkyRTC(github地址 ...
- Windows Media Player安装了却不能播放网页上的视频
前段时间遇到Windows Media Player安装了却不能播放网页上的视频的问题,在网上查找资料时,发现大部分资料都没能解决我这个问题.偶尔试了网上一牛人的方法,后来竟然解决了.现在再找那个网页 ...
- C#播放流媒体的几种方法
原文:[转载]C#播放流媒体的几种方法 做视频开发要学的东西真多,不知道如何入门,乱打乱撞,慢慢摸索吧! 首先搭建Windows Meida Server ,方法很简单,试试就会.在这里需要声明的是, ...
- [转载]C#播放流媒体的几种方法
做视频开发要学的东西真多,不知道如何入门,乱打乱撞,慢慢摸索吧! 首先搭建Windows Meida Server ,方法很简单,试试就会.在这里需要声明的是,这几种方法 都可以播放 本地视频.并且基 ...
- WebRTC:一个视频聊天的简单例子
相关API简介 在前面的章节中,已经对WebRTC相关的重要知识点进行了介绍,包括涉及的网络协议.会话描述协议.如何进行网络穿透等,剩下的就是WebRTC的API了. WebRTC通信相关的API非常 ...
随机推荐
- Qt开源作品39-日志输出增强版V2022
一.前言 之前已经开源过基础版本,近期根据客户需求和自己的项目需求,提炼出通用需求部分,对整个日志重定向输出类重新规划和重写代码. 用Qt这个一站式超大型GUI超市做开发已经十二年了,陆陆续续开发过至 ...
- 综述😋Security and Privacy Challenges of ✌Large Language Models A Survey
- 2025年了,你还不会配置Jetson Orin NX嘛?
2025年了,你还不会配置Jetson Orin NX嘛? 我的设备为:Jetson Orin NX 16G + JetPack6.1+达妙科技载板 帅气的Jetson Orin NX拿到手了,都20 ...
- 解决Failed to load module canberra-gtk-module错误
在Ubuntu环境里,通过./triangulation 1.png 2.png 命令运行高翔的ch7的triangulation程序时报错: Gtk-Message: 09:10:26.571: F ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- Java工具类SignUtil
import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; impo ...
- WPF 设置Button的content为多行模式
查找button的子元素是个TextBlock,再设置它的TextWrappingProperty属性为 TextWrapping.Wrap. Button btn2 = new Button() { ...
- biancheng-go语言概要总结
http://c.biancheng.net/golang/intro/ Go语言总结 1.Go 使用编译器来编译代码.最佳的平衡:快速编译,高效执行,易于开发.因为Go语言没有类和继承的概念,但是它 ...
- 搭建 VuePress 站点必做的 10 个优化
前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 在搭建这 ...
- oracle使用存储过程返回游标实现报表查询
最近在oracle中通过存储过程实现一个报表查询,查询涉及到数据计算这里使用了临时表和存储过程实现输出查询,java接受游标变量返回结果集 第一步.创建统计使用的临时表 CREATE GLOBAL T ...