分享
基于HLS协议视频流的分析处理技术探讨_彭莲香.pdf
下载文档

ID:2249476

大小:1.95MB

页数:3页

格式:PDF

时间:2023-05-04

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 HLS 协议 视频 分析 处理 技术 探讨 彭莲香
基于 HLS 协议视频流的分析处理技术探讨彭莲香郭星涛(内蒙古自治区大数据中心,内蒙古 呼和浩特010010)HTTP Live Streaming(以下简称HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。它的特点是将容量巨大的媒体数据流分割成连续的ts分片,然后在服务端建立对这些ts分片的extend M3U(m3u8)playlist索引文件。客户端基于HTTP的方式向服务器请求m3u8文件并进行解析,向服务器连续的请求下载ts分片来实现完整的播放1。当播放媒体流时,客户端可以选择从不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率,根据网络质量完成视频清晰度的切换2。随着HTML5标准的兴起,Web浏览器在各方面都有了很大的提升,许多基于HLS协议的视频可同时在移动端和PC端播放,比如课程学习、电影电视剧、广播电视网络直播系统3等,但其都存在无法下载、无法二次剪辑创作等问题。文献4采用Python语言进行程序设计,借助爬虫技术实现视频文件的自动化下载和拼接,实现了视频资源的本地化保存。本文对基于HLS协议的视频流传输技术进行分析,提出了多种方式来实现视频流下载和处理的功能,对提升大数据时代下视频流智能化分析处理能力进行了探索。1HLS介绍1.1基于HLS的视频流播放基于HLS协议的视频播放过程如图1所示,首先是由服务器采集并编码传输视频到切片器,切片器对视频创建索引文件,并且切割成n个ts文件,将索引文件和ts文件传输到HTTP服务器上,网站/客户端根据索引文件查找HTTP服务器上的ts文件,连续播放这n个ts文件,就实现视频播放,并且可以根据网络状况自动切换视频的清晰度。1.2 m3u8与ts文件结构索引文件即m3u8文本文件,如图2所示。#EXT-X-VER-SION为M3U8文件的版本,常见的是3。#EXT-X-TARGET-DURATION指定当前视频流中的切片文件的最大时长,也就是说这些ts切片的时长不能大于#EXT-X-TARGETDURATION的值。#EXT-X-MEDIA-SEQUENCE是m3u8直播是的直播切换序列,当播放打开m3u8时,以这个标签的值作为参考,播放对应的序列号的切片。#EXT-X-PLAYLIST-TYPE:VOD的意思是当前的视频流是一个点播流,即该视频的全部的ts文件已经被生成好了。#EXTINF:EXTINF为m3u8列表中每一个分片的duration。#EXTINF表示每个ts切 片视 频 文 件 的时 长。#EXT-X-ENDLIST表 明m3u8文 件不会再产生更多的切片,可以理解为该m3u8已停止更新,并且播放分片到这个标签后结束。2其他相关技术介绍HLS视频流解析获取的主流技术有Python、JavaScript和TamperMonkey,ts视频文件格式转换整合主要由FFmpeg实现。2.1 PythonPython是一种面向对象、解释型、弱类型的脚本语言,也是一种功能强大且完善的通用型语言5,其具有语法简单、可视化、第三方模块丰富以及适合应用于网络环境等优点6。在Python中常 用 的HTTP网 络请 求 库大 致 包 括urllib、httplib2、request等。其中,urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。urllib中一共有四个模块,分别如下:request主要负责构造和发起网络请求,定义了适用于在各种复杂情况下Discussion of Analysis and Processing Technology of Video Stream Based on HLS Protocol摘要:为了提高HLS协议产生的ts切片视频流后续分析处理能力,基于HLS分段策略和视频传输原理,分析运用Python、Nodejs、浏览器插件等不同技术获取视频,利用FFmpeg软件进行视频分析处理,并进行了程序及技术路线设计,取得了较好的结果,对于HLS视频流技术的应用推广具有借鉴意义。关键词:HLS;ts视频流;m3u8;Python;FFmpegAbstract:In order to improve the subsequent analysis and processing capability of ts slice video stream generated byHLS protocol,based on HLS segmentation strategy and video transmission principle,this paper proposes to acquire videothrough Python,Nodejs,browser plug-in and other different technologies,analyzes and processes video through FFmpegsoftware,and designs the program and technical route.Good results have been obtained,which can be used as a refer-ence for the application and promotion of HLS video streaming technology.Keywords:HLS,ts stream,m3u8,Python,FFmpeg图1视频播放流程图图2索引文件结构基于HLS协议视频流的分析处理技术探讨62工业控制计算机2023年第36卷第1期打开URL(主要为HTTP)的函数和类;error为处理异常;parse可以解析各种数据格式;robotparser用于解析robot.txt文件。常用的网页解析库包括pyquery、BeautifulSoup、lxml等。其中,BeautifulSoup是Python用来解析获取的网页源代码的一个库,它提供了一些简单的、Python式的函数用来处理导航、搜索、修改分析树等功能,同时它也是一个工具箱,通过解析文档为用户提供需要抓取的数据。对于解析高度结构化的HTML,相较于正则表达式,用BeautifulSoup能更快速便捷地进行解析和提取。2.2 NodejsNodejs是一个能够在服务器端运行JavaScript的开放源代码,是一个跨平台JavaScript运行环境。它采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步模型等技术来提高性能,可优化应用程序的传输量和规模。request是一个Nodejs模块,以npm包的形式提供,是一个简单的HTTP客户端,通过它可方便地实现HTTP请求。fs模块是指在nodejs中进行的所有与文件相关的操作。2.3浏览器扩展浏览器扩展是用于扩充浏览器功能的程序,主要用于对浏览器功能的增强,它更强调与浏览器相结合。通过扩展可以对用户当前浏览的页面进行操作,即对用户当前浏览页面的DOM进行操作,当用户访问这些页面后,相应脚本即可自动运行,从而实现对页面DOM进行任意增、删、改等复杂操作。而它的界面则使用HTML和CSS进行描述,这样可以用很短的时间构建出赏心悦目的UI。同时JavaScript是一门解释语言,无需对其配置编译器,调试代码时只要刷新一下浏览器就可以看到修改后的结果,这使得开发周期大大缩短7。2.4 FFmpegFFmpeg是一款音视频编解码工具,同时也是一组音视频编码的开源开发套件,为开发者提供了丰富的音视频处理的调用接口。它提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种多彩格式转换、多种采样率转换、多种码率转换等,包含了非常先进的音频/视频编解码库libavcodec。为了保证高可移植性和编解码质量,libavcodec里很多code都是从底层开发的。FFmpeg框架提供了多种丰富的插件模块,包含封装与解封装的插件、编码与解码的插件等,支持在Windows、Mac OS X、Linux等操作系统环境中编译运行。3功能实现本文主要用Python、JavaScript和TamperMonkey三种方式来实现HLS视频流的获取,从FFmpeg工具来实现ts视频格式的整合与转换。3.1总体思路HLS视频流获取与整合的总体思路如图3所示,可利用Python、Nodejs、浏览器扩展分别实现。但利用前两者实现需要获取m3u8文件以及host路径作为程序的输入,具体获取方法如下:打开视频网页,点击F12键或右键“检查”,打开Network选项,使用关键字“m3u8”进行查询,找到对应文件如图4所示,右键选中“Open in new tab”进行下载该文件,同时将该文件的Request URL路径作为host路径。3.2 Python实现方法以m3u8文件和host路径为输入,使用Python语言解析并下载所有的ts视频,并同步建立写入tsList文件,具体算法如下所示:解析m3u8、下载ts视频、写入tsList文件:import osimport requestsimport timehost=https:/ open(1200.m3u8,r)as f:for line in f.readlines():line=line.strip(n)if ts in line:tsArr.append(line)for item in tsArr:headers=user-agent:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/81.0.-4044.138 Safari/537.36time.sleep(6)res=requests.get(host+item,stream=True,headers=head-ers)res.encoding=res.apparent_encodingwith open(item,wb)as ts:for chunk in res.iter_content(chunk_size=1024*1024):if chunk:ts.write(chunk)tsList.append(file+os.path.join(os.getcwd(),图3总体思路图4Network中的m3u8信息632022年12月30日,国家标准化管理委员会下达2022年第四批推荐性国家标准计划,由全国信息化和工业化融合管理标准化技术委员会(SAC/TC573)归口管理的数字化转型管理 参考架构数字化转型管理 能力体系建设指南数字化供应链 体系架构数字化供应链 成熟度模型和数字化供应链 通用安全要求5项国家标准正式获批立项。其中,参考架构和建设指南2项国家标准与已发布的国家标准信息化和工业化融合 数字化转型 价值效益参考模型(GB/T 23011-2022)相互配套,是指导数字化转型的基础性、通用性标准,目的是引导各类组织以体系架构方法为引领,以价值为导向、能力为主线、数据为驱动,系统性、全局性推进数字化转型,稳定获取转型成效;体系架构、成熟度模型、通用安全要求3项国家标准能够为供应链各类参与主体科学认识并系统构建数字化供应链提供参考指引,帮助产业界厘清数字化供应链基本概念和核心要素,掌握数字化供应链的设计方法和实施路径,明确数字化供应链成熟度等级和评价方法,构建数字化供应链安全防护能力,加快数字化供应链体系建设。下一步,工业和信息化部信息技术发展司将立足新型工业化发展,聚焦制造业高质量发展核心需求,指导标准归口单位及有关起草单位开展数字化转型领域国家标准的编制及验证工作,加快标准报批发布和试点应用,打造一批服务各类企业高效开展数字化改造、实现数字化转型升级的标准解决方案。item+)with open(tsList.txt,

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开