首页 > 其他分享 >hls和flv兼容性及使用

hls和flv兼容性及使用

时间:2023-07-24 16:22:17浏览次数:31  
标签:视频 兼容性 浏览器 flash hls flv RTMP 播放

直播协议HLS和RTMP

  直播技术一般有两种协议方式,分别是HLS和RTMP,两种协议分别的解释:

  HLS ,是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案。

  RTMP ,实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 TCP,是一个协议族,包括 RTMP 基本协议及 RTMPT/RTMPS/RTMPE 等多种变种。RTMP 是一种设计用来进行实时数据通信的网络协议,主要用来在 Flash/AIR 平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

  总结下来就是RTMP是Adobe公司推出的基于flash的实时视频消息传输协议,服务端和用户端通过flash建立长链接,并实时进行消息的推送、传输和接收然后播放,对应的视频播放格式是flv。而HLS就是apple公司为了消灭flash(因为老乔一直以来对flash的和ios对flash的不支持)自己定义的一套替代flash的视频解决方案。服务器和用户端通过不停的接收视频片段(每个片段都通过一次http请求)来播放,对应的视频播放格式是m3u8,其中m3u8只是一个表示视频片段地址的纯文本,用来加载一个个的.ts视频文件。

  

HLS和RTMP的利弊

  两种协议各有利弊,具体的在本篇中不展开了,就我所知的RTMP协议延迟低,协议本身设计简洁,适合实时性较高的网络直播,HLS是http请求,所以可以用cdn缓存等方式加快传输,但是因为是视频片段,容易被跳过,所以如果有强制广告要求的话也可能被跳过。但是RTMP因为占用的网络端口是1935,如果以后浏览器的一些新安全机制就有可能block所有80端口以外的连接,也有安全性问题。

  flv和m3u8格式的浏览器兼容性

移动端
  因为苹果公司对flash的强烈以及自己定的视频协议,所以在ios端原生支持m3u8格式的视频播放而不支持flv的播放,而且因为苹果在移动端的领头作用,所以其他移动端包括android浏览器也都原生支持m3u8格式的视频播放。

  

PC端

  pc端因为历史原因,在hls之前都是用flash播放视频,后来随着html5的普及,可以用原生的video标签来播放mp4、ogg、webm等视频格式的播放,但是对于直播格式m3u8(除了safari)和flv都不能支持播放。所以现在pc端普遍的做法还是通过flash来播放m3u8和flv格式的视频。

  

MSE

  但是因为flash的淘汰正在加速,也比较有决心,比如我就发现现在chrome播放flash视频已经要手动点击允许了。加上media source extention在高端浏览器已经被支持,就可以直接在浏览器端就实现视频格式的转换。MSE是一个可以通过js控制浏览器视频源文件的api,有了这个api我们就可以通过js在浏览器端对视频进行转码及处理并提供给video标签了。B站已经开源了一个flv播放器flv.js,原理就是通过解析视频源,然后进行视频源解码转换成mp4格式,然后通过mse丢在video原生标签里播放,同理也有hls.js对m3u8格式的视频进行转码在pc端播放。

总结

PC端浏览器(包括PC端safari):hls和flv都支持,但建议用flv;hls分片传输会导致有一定延迟

移动端浏览器:iOS系统,建议用hls;安卓系统,建议用flv

标签:视频,兼容性,浏览器,flash,hls,flv,RTMP,播放
From: https://www.cnblogs.com/huihuihero/p/17577555.html

相关文章

  • MAUI+MASA Blazor 兼容性测试报告及分析
    目录1.背景2.目的3.测试目标4.预期结果5.测试策略及范围6.测试结果与分析7.附加内容8.结尾1.背景MASABlazor组件是一款基于MaterialDesign设计和BlazorComponent的交互能力提供标准的基础组件库。提供如布局、弹框标准、Loading、全局异常处理等标准场景的预置组件......
  • MAUI+MASA Blazor 兼容性测试报告及分析
    目录1背景2目的3.测试目标4.预期结果5.测试策略及范围6.测试结果与分析7.附加内容8.结尾1背景MASABlazor组件是一款基于MaterialDesign设计和BlazorComponent的交互能力提供标准的基础组件库。提供如布局、弹框标准、Loading、全局异常处理等标准场景的预置组件。它旨在为......
  • 岩土工程监测振弦采集仪与振弦传感器的兼容性问题
    岩土工程监测振弦采集仪与振弦传感器的兼容性问题岩土工程监测中,振弦采集仪和振弦传感器是不可或缺的两个部分。振弦传感器是用来测量振动和位移的,而振弦采集仪则是用来接收和处理这些数据的。然而,由于市场上的振弦采集仪和振弦传感器种类繁多,其兼容性问题也引起了广泛关注。 ......
  • 【我和openGauss的故事】浅尝 openGauss v5.0.0 的 MySQL 语法兼容性
    【我和openGauss的故事】浅尝openGaussv5.0.0的MySQL语法兼容性严少安2023-07-1418:50发表于openGauss公众号在openGauss中,以下简称og5,提供了一个名为Dolphin的插件,并以此来提供MySQL的兼容性。本文将以openGaussv5.0.0版本为基础,对照PostgreSQLv15.2和Mar......
  • 可移植性(兼容性)测试指南
    可移植性测试可移植性是指应用程序能够安装到不同的环境中,在不同的环境中使用,甚至可以移动到不同的环境中。当然,前两者对所有系统都很重要。就PC软件而言,鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速变化,能够移动和适应新环境也是至关重要的。在计算机领......
  • compattelrunner.exe 进程会定期运行,扫描系统以收集应用程序、硬件和设备的兼容性数据
    compattelrunner.exe是Windows容错报告工具(WindowsCompatibilityTelemetry)Windows容错报告工具是Microsoft开发的一项功能,旨在帮助改进Windows的稳定性和兼容性。而compattelrunner.exe是容错报告工具的一个组成部分,它负责收集系统的兼容性数据以及硬件和驱动程序信......
  • hls拉流之chimee-player
    相比rtmp拉流,hls拉流没有flash,可以手机浏览器使用,但是他的拉流会延迟十几二十秒左右,我这边用的在index.html里面引入的,好用标签代码,<divid="wrapper"></div>js代码letplayer=newChimeePlayer({wrapper:'#wrapper',//标签id名称src:src......
  • JeecgBoot低代码开发平台与达梦数据完成兼容性互认证
    近日,JeecgBoot与达梦数据库管理系统V8完成兼容性认证测试;通过双方共同测试表明,Jeecgboot低代码开发平台与达梦数据库管理系统V8,相互兼容,系统功能运行稳定,能够满足用户更多的性能需求;并签署产品兼容互认证明。JeecgBoot将持续进行更多的国产化软件及国产化服务器的兼容性测试,将会不......
  • 最小不兼容性
    给你一个整数数组nums​​​和一个整数k。你需要将这个数组划分到k个相同大小的子集中,使得同一个子集里面没有两个相同的元素。一个子集的不兼容性是该子集里面最大值和最小值的差。请你返回将数组分成k个子集后,各子集不兼容性的和的最小值,如果无法分成分成k个子集,......
  • HLS - 循环优化
    参考https://blog.csdn.net/pc153262603/article/details/106385483https://www.xilinx.com/htmldocs/xilinx2017_4/sdaccel_doc/fde1504034360078.htmlhttps://hitsz-cslab.oschina.io/dla/lab2/theory/#31.单个循环延迟优化1.1循环展开(Unroll)将一个循环展开成多......