浏览器不需要安装插件,前端播放在线视频方案,几款播放器介绍,hls协议下的h.265视频播放方案推荐

本文主要是介绍浏览器不需要安装插件,前端播放在线视频方案,几款播放器介绍,hls协议下的h.265视频播放方案推荐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一般我们播放本地视频都是使用 video标签,但是<video> 元素只支持三种视频格式:MP4、WebM、Ogg,对于在线视频直接使用video是没法播放的,这里介绍几款这两天我在做播放在线监控视频功能时使用过的几款播放器,初次接触流媒体踩了一堆坑,到目前为止对这部分内容都还了解的很浅显,若有问题请在评论区指出,欢迎交流。
该文章旨在为小白推荐播放方案,谁还不是从小白过来的呢?

先介绍几个概念:

流协议:流协议就是在两个通信系统之间传输多媒体文件的一套规则,它定义了视频文件将如何分解为小数据包以及它们在互联网上传输的顺序,RTMP与 RTSP 是比较常见的流媒体协议。

HLS:HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。参考:HLS。简单来说,HLS是一种协议,如果你的视频源是http://xxxx.m3u8这种,就选择这种协议,.m3u8是个文本文件,直播时,他的内容实时变更,内部指向一个或多个.ts文件。

HTTP-FLV: HTTP-FLV 是将音视频数据以 FLV 文件格式进行封装,再将 FLV 格式数据封装在 HTTP 协议中进行传输的一种流媒体传输方式。HTTP-FLV 的实现原理: HTTP-FLV 利用 HTTP/1.1 分块传输机制发送 FLV 数据。虽然直播服务器无法知道直播流的长度,但是 HTTP/1.1 分块传输机制可以不填写 conten-length 字段而是携带 Transfer-Encoding: chunked 字段,这样客户端就会一直接受数据。参考:FLV 和 HTTP-FLV。
简单来说就是你的视频源是直播且是http://xxxx.flv,就选择这种协议播放。还有个websocket-flv,是基于websocket的。

RTMP与RTSP: 什么是RTMP 和 RTSP?它们之间有什么区别?

H264(AVC)与H265(HEVC):都是视频编码,是视频压缩格式,由于视频本身的码流太大,所以需要经过压缩然后再通过网络进行传输,其中H265是H264的升级版,很多播放器无法播放H265视频。

下列播放器排名不分先后,自己评判。

1.西瓜播放器

优点:
1.官网教程非常简单清晰,上手快。
2.使用起来体验感很好
3.支持直播点播,支持hls,http+flv,dash,WebRTC直播,还有音乐播放器
4.提供在线可调试demo

缺点:
1.xgplayer-hls.js不能播放hls H.265视频,因为是基于hls.js封装的,hls.js支持H264,不支持H265。
2.xgplayer-hls测试后发现同样不能播放hls H.265视频。
3.播放不同的视频需要自己切换对应的包,如xgplayer-flv.js,xgplayer-hls.js(也可以算是优点,包体积更小,更灵活,看你怎么评判了)

我一开始选取的这款播放器,但很遗憾,我的监控视频是hls协议的H.265视频,没法播放。。。但总的来说如果不播放H.265视频,个人非常推荐!


2.h265web.js

 

2.使用后是目前唯一一个可以满足我需求的播放器,可以播放hls协议的H.265视频,主码流的,视频信息如下:

但问题是很卡!卡爆了的卡!,但是好歹出现了画面,后改为辅码流视频源才播放流畅,视频信息如下: 

缺点:
1.很占内存,引入项目后至少占1个g内存,而且对h265视频解析是使用canvas绘制的方式(目前好像只有这种方案才能播放),对比使用video播放来说慢了些。但h265webj内部做了判断,当视频是h264格式的会改为video标签播放。
2.播放器底部的controll需要自己实现,官网提供的是各种api,提倡自己封装。可参考我这两篇文章自己实现,或自己查阅文档封装。
h265web.js 同时播放多个视频,修改官方example 中player.js并重新编译
前端使用hls方式播放h265(HEVC)格式的.ts在线文件,附vue2.x封装h265web.js代码
3.控制台作者给自己打广告,连播放器要传的参数token都是自己的广告。。。不过问题不大,开源的嘛,可以理解。

4.还有个问题,在tag v20211104和最新版本 tag v20220916播放上面那个主码流 hls协议的H.265视频时发现,低版本tag v20211104反而更流畅?猜测是后续版本迭代升级后体积变大,占用更多内存,导致后面的版本播放更卡顿。

扩展:
若因为卡顿导致播放延迟,可进行追帧设置,动态更改播放倍数优化。我并未实现相关代码,因为调试起来太麻烦了,监控是内网视频,没法在线调试。。。目前来说播放效果都比较好,延迟也不高,几秒左右。

3.videojs

一个比较成熟的方案,用的人比较多,但我没怎么用过,我大概测试了下,可播放hls协议下h.264视频,但不支持播放hls 协议下的h.265视频,然后我就pass 掉了。
测试播放.m3u8后缀视频源html代码:

<html lang="en">
<head><meta charset="UTF-8"><title>videoJs</title><link href="https://vjs.zencdn.net/7.20.3/video-js.css" rel="stylesheet" /><!-- If you'd like to support IE8 (for Video.js versions prior to v7) --><!-- <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script> --><script src="https://vjs.zencdn.net/7.20.3/video.min.js"></script><script src="https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js"></script>
</head>
<body>
<section id="videoPlayer"><video id="example-video" width="600" height="300" class="video-js vjs-default-skin vjs-big-play-centered" poster=""><source src="http://rm03.wscdn.hls.xiaoka.tv/live/fczjp0Dc_J60VGMN/playlist.m3u8" type="application/x-mpegURL" id="target"></video>
</section>
<script type="text/javascript">var player = videojs('example-video', { "poster": "", "controls": "true" }, function() {this.on('play', function() {console.log('正在播放');});//暂停--播放完毕后也会暂停this.on('pause', function() {console.log("暂停中")});// 结束this.on('ended', function() {console.log('结束');})});
</script>
</body>
</html>

4.liveweb

iveweb是可支持H.264/H.265视频播放的流媒体播放器,性能稳定、播放流畅,可支持的视频流格式有RTSP、RTMP、HLS、FLV、WebRTC等,具备较高的可用性。liveweb还拥有Windows、Android、iOS版本,其灵活的视频能力,极大满足了用户的多样化场景需求。

liveweb具备较强的灵活性,在视频直播过程中liveweb可通过H5进行视频解码,只要客户端支持H5,就能完美进行视频的无插件直播,同时还支持大码率视频直播,并可支持H.264、H.265两种编码格式。

Liveweb是好游科技自主开发的网页播放器,支持 RTSPRTMPHTTPHLSUDPRTPFile 等多种流媒体协议播放,同时也有多种显示方式 (GDI,D3D) 及格式 (RGB24,YV12,YUY2,RGB565),经过 7x24 小时连续拷机测试,能够很好的处理断连

如果大家正在找寻一款供能强大的流媒体播放器,那么liveweb将会是一个不错的选择,我们也欢迎大家的了解和试用。

 

 

这篇关于浏览器不需要安装插件,前端播放在线视频方案,几款播放器介绍,hls协议下的h.265视频播放方案推荐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742036

相关文章

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本