收藏 分销(赏)

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

上传人:自信****多点 文档编号:244893 上传时间:2023-05-06 格式:PDF 页数:3 大小:1.95MB
下载 相关 举报
基于HLS协议视频流的分析处理技术探讨_彭莲香.pdf_第1页
第1页 / 共3页
基于HLS协议视频流的分析处理技术探讨_彭莲香.pdf_第2页
第2页 / 共3页
基于HLS协议视频流的分析处理技术探讨_彭莲香.pdf_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、基于 HLS 协议视频流的分析处理技术探讨彭莲香郭星涛(内蒙古自治区大数据中心,内蒙古 呼和浩特010010)HTTP Live Streaming(以下简称HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。它的特点是将容量巨大的媒体数据流分割成连续的ts分片,然后在服务端建立对这些ts分片的extend M3U(m3u8)playlist索引文件。客户端基于HTTP的方式向服务器请求m3u8文件并进行解析,向服务器连续的请求下载ts分片来实现完整的播放1。当播放媒体流时,客户端可以选择从不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率,根据网络质量完成

2、视频清晰度的切换2。随着HTML5标准的兴起,Web浏览器在各方面都有了很大的提升,许多基于HLS协议的视频可同时在移动端和PC端播放,比如课程学习、电影电视剧、广播电视网络直播系统3等,但其都存在无法下载、无法二次剪辑创作等问题。文献4采用Python语言进行程序设计,借助爬虫技术实现视频文件的自动化下载和拼接,实现了视频资源的本地化保存。本文对基于HLS协议的视频流传输技术进行分析,提出了多种方式来实现视频流下载和处理的功能,对提升大数据时代下视频流智能化分析处理能力进行了探索。1HLS介绍1.1基于HLS的视频流播放基于HLS协议的视频播放过程如图1所示,首先是由服务器采集并编码传输视频

3、到切片器,切片器对视频创建索引文件,并且切割成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直播是的

4、直播切换序列,当播放打开m3u8时,以这个标签的值作为参考,播放对应的序列号的切片。#EXT-X-PLAYLIST-TYPE:VOD的意思是当前的视频流是一个点播流,即该视频的全部的ts文件已经被生成好了。#EXTINF:EXTINF为m3u8列表中每一个分片的duration。#EXTINF表示每个ts切 片视 频 文 件 的时 长。#EXT-X-ENDLIST表 明m3u8文 件不会再产生更多的切片,可以理解为该m3u8已停止更新,并且播放分片到这个标签后结束。2其他相关技术介绍HLS视频流解析获取的主流技术有Python、JavaScript和TamperMonkey,ts视频文件格式转

5、换整合主要由FFmpeg实现。2.1 PythonPython是一种面向对象、解释型、弱类型的脚本语言,也是一种功能强大且完善的通用型语言5,其具有语法简单、可视化、第三方模块丰富以及适合应用于网络环境等优点6。在Python中常 用 的HTTP网 络请 求 库大 致 包 括urllib、httplib2、request等。其中,urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。urllib中一共有四个模块,分别如下:request主要负责构造和发起网络请求,定义了适用于在各种复杂情况下Disc

6、ussion 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 subseque

7、nt 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

8、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(主要为

9、HTTP)的函数和类;error为处理异常;parse可以解析各种数据格式;robotparser用于解析robot.txt文件。常用的网页解析库包括pyquery、BeautifulSoup、lxml等。其中,BeautifulSoup是Python用来解析获取的网页源代码的一个库,它提供了一些简单的、Python式的函数用来处理导航、搜索、修改分析树等功能,同时它也是一个工具箱,通过解析文档为用户提供需要抓取的数据。对于解析高度结构化的HTML,相较于正则表达式,用BeautifulSoup能更快速便捷地进行解析和提取。2.2 NodejsNodejs是一个能够在服务器端运行JavaScr

10、ipt的开放源代码,是一个跨平台JavaScript运行环境。它采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步模型等技术来提高性能,可优化应用程序的传输量和规模。request是一个Nodejs模块,以npm包的形式提供,是一个简单的HTTP客户端,通过它可方便地实现HTTP请求。fs模块是指在nodejs中进行的所有与文件相关的操作。2.3浏览器扩展浏览器扩展是用于扩充浏览器功能的程序,主要用于对浏览器功能的增强,它更强调与浏览器相结合。通过扩展可以对用户当前浏览的页面进行操作,即对用户当前浏览页面的DOM进行操作,当用户访问这些页面后,相应脚本即可自动运行,从而实现

11、对页面DOM进行任意增、删、改等复杂操作。而它的界面则使用HTML和CSS进行描述,这样可以用很短的时间构建出赏心悦目的UI。同时JavaScript是一门解释语言,无需对其配置编译器,调试代码时只要刷新一下浏览器就可以看到修改后的结果,这使得开发周期大大缩短7。2.4 FFmpegFFmpeg是一款音视频编解码工具,同时也是一组音视频编码的开源开发套件,为开发者提供了丰富的音视频处理的调用接口。它提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种多彩格式转换、多种采样率转换、多种码率转换等,包含了非常先进的音频/视频编解码库libavcodec。为了保证高可移植性和

12、编解码质量,libavcodec里很多code都是从底层开发的。FFmpeg框架提供了多种丰富的插件模块,包含封装与解封装的插件、编码与解码的插件等,支持在Windows、Mac OS X、Linux等操作系统环境中编译运行。3功能实现本文主要用Python、JavaScript和TamperMonkey三种方式来实现HLS视频流的获取,从FFmpeg工具来实现ts视频格式的整合与转换。3.1总体思路HLS视频流获取与整合的总体思路如图3所示,可利用Python、Nodejs、浏览器扩展分别实现。但利用前两者实现需要获取m3u8文件以及host路径作为程序的输入,具体获取方法如下:打开视频网页

13、,点击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

14、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.appa

15、rent_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)归口管理的数字化转型管理 参考架构数字化转型管理 能力体系建设指南数字化供应链 体系架

16、构数字化供应链 成熟度模型和数字化供应链 通用安全要求5项国家标准正式获批立项。其中,参考架构和建设指南2项国家标准与已发布的国家标准信息化和工业化融合 数字化转型 价值效益参考模型(GB/T 23011-2022)相互配套,是指导数字化转型的基础性、通用性标准,目的是引导各类组织以体系架构方法为引领,以价值为导向、能力为主线、数据为驱动,系统性、全局性推进数字化转型,稳定获取转型成效;体系架构、成熟度模型、通用安全要求3项国家标准能够为供应链各类参与主体科学认识并系统构建数字化供应链提供参考指引,帮助产业界厘清数字化供应链基本概念和核心要素,掌握数字化供应链的设计方法和实施路径,明确数字化供

17、应链成熟度等级和评价方法,构建数字化供应链安全防护能力,加快数字化供应链体系建设。下一步,工业和信息化部信息技术发展司将立足新型工业化发展,聚焦制造业高质量发展核心需求,指导标准归口单位及有关起草单位开展数字化转型领域国家标准的编制及验证工作,加快标准报批发布和试点应用,打造一批服务各类企业高效开展数字化改造、实现数字化转型升级的标准解决方案。item+)with open(tsList.txt,w)as f:for i in tsList:f.write(i+n)3.3 Nodejs实现方法以m3u8文件和host路径为输入,使用Nodejs语言解析并下载所有的ts视频,并同步建立写入tsL

18、ist文件,具体算法如下所示:解析m3u8、下载ts视频、写入tsList文件:const fs=require(fs);const path=require(path);const request=require(request);varsource=fs.readFileSync(1200.m3u8,utf-8);/读 取m3u8var host=https:/ tsList=arr=arr.filter(item)=returnitem.match(/.ts$/);if(arr.length 0)arr.forEach(e=var url=host+e;request(url,heade

19、rs:User-Agent:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/71.0.-3578.98 Safari/537.36,X-Requested-With:XMLHttpRequest,function(err,response,body)if(!err&response.statusCode=200)console.log(ok);const resultDir=path.join(_dirname,e);tsList.push(file$resultDir);resolve(t

20、rue)else console.log(错误,err)reject(err).pipe(fs.createWriteStream(e););fs.writeFileSync(path.join(tsFile,./tsList.txt),tsList.join(n)3.4浏览器扩展实现方法可实现HLS视频流下载的浏览器扩展有FetchV、VideoDownloader、HDS/HLS Video Downloader、Stream Recorder等等,用户可直接安装启用此类扩展,然后在视频网页上点击由插件生成的下载按钮即可获取所有ts或mp4格式文件。3.5视频格式转换方法将通过浏览器拓展方

21、法获取的所有ts视频文件存放于同一文件夹内,新建tsList.txt,每一行对应一个ts文件,格式为“fileD:tsfile0.ts”(如果使用上述Nodejs或Python方法实现可省略该步骤)。最后通过cmd调用FFmpeg,输入“ffmpeg-fconcat-safe 0-y-i D:tsfiletsList.txt-c copy-strict-2D:outconcated.mp4”,即可实现ts视频文件的整合并转为mp4格式。4结束语本文采用Python、Nodejs以及浏览器扩展三种方式实现了基于HLS技术的网站视频资源获取与下载,借助FFmpeg软件进行视频的分析处理,实现了大数

22、据信息时代下视频资源的自动化获取分析,同时也为其他协议的网站视频资源获取提供了参考。参考文献1徐煜烨,李明春,祝振东,等.基于HLS自适应定位播放技术的研究与实现J.计算机与数字工程,2019,47(5):1212-12162曹辉.基于HLS协议的全景高校课堂视频直播平台的设计和研究J.工业控制计算机,2017,30(6):32-333魏雪飞,周详.HLS流媒体技术在广播电视网络直播系统的应用J.视音频技术,2020,27(9):38-404阮盛元.基于Python实现HLS流媒体视频下载的方法J.图形处理与多媒体技术,2021(10):133-1345时春波,李卫东,秦丹阳,等.Python环境下利用Selenium与JavaScript逆向技术爬虫研究J.河南科技,2022,41(10):20-236孟宝灿.Python网络爬虫应用探讨J.广播电视信息,2022,29(3):108-1107田思,杨雁.基于Chrome浏览器扩展的图书采访插件开发J.电脑知识与技术,2019,15(5):93-95收稿日期:2022-07-065项数字化转型国家标准正式立项基于HLS协议视频流的分析处理技术探讨64

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 自然科学论文

移动网页_全站_页脚广告1

关于我们      联系我们       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号  |  icp.png浙ICP备2021020529号-1 浙B2-2024(办理中)  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服