最新要闻
- 从三岁到八十二岁的武则天(转载)---王晓磊著 之简介|每日视讯
- 现场视频可怕!四川一特斯拉撞飞路人致身亡:被撞者腾空而起-热门
- 6月1日开市!大观园早市回来啦
- 全球视讯!69㎡三房,72㎡四房,广州的户型都卷成这样了?
- 蛋白质纳米“计算机”问世:未来有望治疗癌症
- 贾跃亭造车梦成 李想:理想很多优秀负责人都来自法拉第未来 当前信息
- 快看:高颜值更有强悍性能 超频可解锁200W!影驰RTX 4060 Ti星曜OC显卡评测
- 砸手里了!推特估值大减:只剩马斯克收购价三分之一
- 马斯克高调收购“看走眼”?Twitter最新估值大跌近70%_世界时快讯
- 火狐也将放弃旧平台:Firefox 115将是支持Win7/8.1最后版本
- 环球快消息!福星股份董秘回复:截止5月29日公司股东人数约为5.48万
- 仓网升级,链通全国 顺丰供应链为小米打造原料央仓
- 性能超苹果A17 天玑9300卷出新高度:4个X4超大核详细规格出炉
- 【新视野】捷克一女婴出生2天就被母亲打耳洞 妈妈:应该是不疼的
- 微星发布全新Z790系主板:首次支持Wi-Fi 7 及5千兆网卡 世界热消息
- 又稳又圆 比亚迪仰望U8原地掉头为何这么慢?比快更难实现!
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
每日资讯:基于 Web 实现 m3u8 视频播放的简单应用示例
基于 Web 实现 m3u8 视频播放的简单应用示例
实现思路
将视频(MP4 等)转换为 M3U8 视频的服务,可以按照以下步骤进行操作:
【资料图】
将视频(MP4 等)转换为 M3U8:在服务中,使用适当的工具(如 FFmpeg)将接收到的视频(MP4 等)转换为 M3U8 格式。这将生成一个包含视频流的 M3U8 文件以及相应的分段(TS)文件。
提供边下边播服务:将生成的 M3U8 文件和分段文件存储在适当的位置(如服务器上的文件夹或云存储服务中)。然后,可以通过将这些文件的 URL 提供给前端,使前端能够通过边下边播的方式逐段加载和播放视频。
前端实现 M3U8 播放器:在前端,可以使用现有的视频播放器库(如 video.js、plyr.js 等)或基于 HLS(HTTP Live Streaming)协议的播放器库(如 hls.js)来实现 M3U8 视频的播放器。这些库可以通过提供 M3U8 文件的 URL 来加载和播放视频。
一、将视频(MP4 等)转换为 M3U8 视频
使用 Python 实现将 MP4 视频转换为 M3U8 视频,按照以下步骤进行操作:
- 安装所需的库:首先,确保已安装所需的库。在 Python 中,可以使用
ffmpeg-python
库来与 FFmpeg 进行交互,以执行视频转换操作。可以使用以下命令安装该库:
pip install ffmpeg-python
- 导入库和设置转换函数:在 Python 代码中,导入
ffmpeg
模块,并创建一个函数,用于将 MP4 转换为 M3U8。以下是一个示例代码:
import ffmpegdef convert_mp4_to_m3u8(input_file, output_file): """ Converts an MP4 file to an M3U8 file using ffmpeg. Args: input_file (str): The path to the input MP4 file. output_file (str): The path to the output M3U8 file. Returns: bool: True if the conversion was successful, False otherwise. """ try: ffmpeg.input(input_file).output(output_file, format="hls", hls_time=10, hls_segment_type="mpegts").run() return True except ffmpeg.Error as e: print(f"An error occurred during video conversion: {e.stderr}") return False
在这个示例代码中,convert_mp4_to_m3u8
函数接受输入文件路径和输出文件路径作为参数。它使用 FFmpeg 将输入文件转换为 M3U8 格式,并将分段(TS)文件输出到指定的输出文件路径。
二、实现 HTTP 服务器,提供 M3U8 视频的访问
方法一、使用 Python 标准库中的 http.server
模块
这个模块提供了一个简单的 HTTP 服务器,可以处理 GET 和 HEAD 请求,并可以为客户端提供静态文件。
以下是一个简单的示例代码,可以启动一个 HTTP 服务器并为客户端提供视频等资源的访问:
import http.serverimport socketserverPORT = 8000Handler = http.server.SimpleHTTPRequestHandlerwith socketserver.TCPServer(("", PORT), Handler) as httpd: print("serving at port", PORT) httpd.serve_forever()
在这个示例中,创建了一个 http.server.SimpleHTTPRequestHandler
处理程序,它可以处理 GET 和 HEAD 请求,并可以为客户端提供静态文件。然后,使用 socketserver.TCPServer
创建一个 TCP 服务器,并将处理程序传递给它。最后,调用 serve_forever()
方法开始监听来自客户端的请求。
将视频等资源放在服务器的根目录下,例如 ./video.m3u8
,客户端可以通过浏览器访问 http://localhost:8000/video.m3u8
来获取该资源。客户端也可以使用其他 HTTP 客户端程序(例如 curl
或者 wget
)来访问资源。
不过需要注意的是,这种方式只适合提供小型的静态文件。如果要提供大型视频等资源,最好使用专门的服务器软件来处理,例如 Apache 或 Nginx。
方法二、使用 Flask 框架
Flask 框架可以提供一种更为灵活的方式来实现视频等静态资源的访问。下面是一个简单的示例代码:
from flask import Flask, send_from_directoryapp = Flask(__name__)@app.route("/")def static_file(path): return send_from_directory(".", path)if __name__ == "__main__": app.run(port=8000)
在这个示例中,定义了一个名为 static_file
的路由,它可以处理所有的 HTTP GET 请求,并使用 send_from_directory
函数返回请求的文件。在这里,将请求的文件从当前目录中返回。如果要返回其他目录下的文件,可以将 send_from_directory
函数的第一个参数设置为目录的路径。
要访问视频等静态资源,可以将它们放在与 Flask 应用程序相同的目录中,并使用相对路径作为 URL。例如,如果视频文件名为 video.m3u8
,可以使用 http://localhost:8000/video.m3u8
访问该文件。
需要注意的是,这种方式也适用于小型的静态文件。如果要提供大型视频等资源,最好使用专门的服务器软件来处理,例如 Apache 或 Nginx。另外,这里的示例代码只提供了最简单的静态资源访问功能,如果需要更高级的功能(例如缓存控制、安全性等),可以使用 Flask 扩展或者在代码中自行实现。
三、Web 前端播放 M3U8 视频
M3U8 是一种基于 HTTP Live Streaming (HLS) 协议的视频流播放格式(在播放 M3U8 文件时需要将视频文件和 M3U8 文件都放在 HTTP 服务器上,并通过 HTTP 协议进行访问)。要在 Web 前端中实现 M3U8 播放器,可以使用一些开源的 JavaScript 库,例如 hls.js
和 video.js
。
hls.js
是一个基于 JavaScript 实现的 M3U8 播放器库。它可以自动检测浏览器是否支持 HLS,如果不支持则使用 Flash 播放器来进行播放。以下是一个使用 hls.js
的示例代码:
hls.js player example <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script> <script> var video = document.getElementById("video"); if (Hls.isSupported()) { var hls = new Hls(); hls.loadSource("http://127.0.0.1:8000/path/to/video.m3u8"); hls.attachMedia(video); hls.on(Hls.Events.MANIFEST_PARSED, function () { // video.play(); }); } else if (video.canPlayType("application/vnd.apple.mpegurl")) { video.src = "http://127.0.0.1:8000/path/to/video.m3u8"; video.addEventListener("loadedmetadata", function () { // video.play(); }); } </script>
在这个示例中,首先��页面中引入了 hls.js
库。然后,创建一个 HTML5 video
元素,并为它设置了 controls
属性,以便用户可以控制视频的播放。
接着,使用 Hls.isSupported()
方法检测浏览器是否支持 HLS。如果支持,则创建一个 Hls
对象,并使用 loadSource
方法加载 M3U8 文件。然后,使用 attachMedia
方法将 video
元素附加到 Hls
对象上,并在 MANIFEST_PARSED
事件触发时开始播放视频。
如果浏览器不支持 HLS,就检测是否支持 application/vnd.apple.mpegurl
格式。如果支持,则为 video
元素的 src
属性设置 M3U8 文件的路径,并在 loadedmetadata
事件触发时开始播放视频。
除了 hls.js
,还有一些其他的 JavaScript 库可以用来实现 M3U8 播放器,例如 video.js
。下面是一个使用 video.js
的示例代码:
video.js player example <script src="https://vjs.zencdn.net/8.3.0/video.min.js"></script> <script> var video = videojs("video", { techOrder: ["html5", "flash"], sources: [ { src: "http://127.0.0.1:8000/path/to/video.m3u8", type: "application/x-mpegURL", }, ], }); // video.play(); </script>
在这个示例中,首先引入了 video.js
的 CSS 和 JavaScript 文件。然后,创建了一个 HTML5 video
元素,并为它设置了 class
属性,以便应用 video.js
的默认样式。
接着,使用 videojs
函数创建一个 video.js
对象,并为其指定了 techOrder
和 sources
选项。techOrder
选项指定了播放视频时使用的技术顺序,如果浏览器不支持 HLS,则会使用 Flash 播放器来进行播放。sources
选项指定了待播放的 M3U8 文件的路径和类型。
最后,调用 play
方法开始播放视频。
关键词:
-
【经验分享】锐捷EVE在火狐游览器中,取消一律打开此应用的选项,重新选择默认打开应用,如SecureCRT-动态焦点
环境:>工具:锐捷EVE模拟器,火狐游览器,SecureCRT_8 7系统版本:Windows10 需求描述:>描述:在选择一
来源: -
当前讯息:淘宝太细了:mysql 和 es 的5个一致性方案,你知道吗?
文章很长,且持续更新,建议收藏起来,慢慢读![**疯狂创客圈总目录博客园版**](https: www cnblogs com c
来源: 每日资讯:基于 Web 实现 m3u8 视频播放的简单应用示例
【经验分享】锐捷EVE在火狐游览器中,取消一律打开此应用的选项,重新选择默认打开应用,如SecureCRT-动态焦点
当前讯息:淘宝太细了:mysql 和 es 的5个一致性方案,你知道吗?
世界热点!2022 Kube-OVN开源社区年度报告
天天视讯!可配置Modbus网关 嵌入式设备联网解决方案
从三岁到八十二岁的武则天(转载)---王晓磊著 之简介|每日视讯
现场视频可怕!四川一特斯拉撞飞路人致身亡:被撞者腾空而起-热门
6月1日开市!大观园早市回来啦
全球视讯!69㎡三房,72㎡四房,广州的户型都卷成这样了?
可视化探索开源项目的 contributor 关系 环球最新
蛋白质纳米“计算机”问世:未来有望治疗癌症
贾跃亭造车梦成 李想:理想很多优秀负责人都来自法拉第未来 当前信息
快看:高颜值更有强悍性能 超频可解锁200W!影驰RTX 4060 Ti星曜OC显卡评测
砸手里了!推特估值大减:只剩马斯克收购价三分之一
马斯克高调收购“看走眼”?Twitter最新估值大跌近70%_世界时快讯
火狐也将放弃旧平台:Firefox 115将是支持Win7/8.1最后版本
环球新动态:MySQL之DDL表创建及DML数据处理操作
今日视点:直播软件源码,审核的“中坚力量”鉴黄功能!
环球快消息!福星股份董秘回复:截止5月29日公司股东人数约为5.48万
仓网升级,链通全国 顺丰供应链为小米打造原料央仓
性能超苹果A17 天玑9300卷出新高度:4个X4超大核详细规格出炉
【新视野】捷克一女婴出生2天就被母亲打耳洞 妈妈:应该是不疼的
微星发布全新Z790系主板:首次支持Wi-Fi 7 及5千兆网卡 世界热消息
又稳又圆 比亚迪仰望U8原地掉头为何这么慢?比快更难实现!
肯德基麦当劳儿童节玩具断货:黄牛线上倒卖 焦点热门
猛打价格战,手术机器人市场要变天了
柏子滋心丸怎么样
稳增长政策接续发力预期升温 每日快讯
国内新一轮油价调整6月13日开启!大概率还是上涨
1599元 雷蛇战锤狂鲨专业极速版耳机发布:蓝牙、2.4GHz双模连接 焦点报道
天天新动态:《暗黑破坏神4》部分皮肤需氪金28刀 但不影响游玩
今天是世界无烟日 专家:电子烟同样有害健康 世界微头条
官方回应广东汕尾海滩突现百米生蚝带:建议尽量不要食用
JS的严格模式 天天日报
会流程图却不会UML活动图?活动图深度剖析,就怕你学不会! 世界快资讯
广西融安县市场监管局开展专项检查守护“美丽经济” 天天观点
旧了也是香饽饽!iPhone二手受追捧:保值好、iOS流畅、苹果够大牌 全球观察
每日速看!曾被认为女版乔布斯!“滴血验癌”创始人入狱:被判11年
杭州被赖车司机称将起诉两名乘客!超24小时不下车 被行拘
火狐也将放弃旧平台:Firefox 115将是支持Win7/8.1最后版本
一洗脸就进水:女子3千割眼袋3个月眼睛闭不合 医生提醒爱美要适当
深圳最好的医院是哪个医院正规_深圳最好的医院
张青松出席东亚及太平洋 中央银行行长会议组织 第64届副手会暨第33届 货币与金融稳定委员会会议_看点
今日热文:keycloak~自定义登出接口
快播:Blazor 跨平台的、共享一套UI的天气预报 Demo
天天热资讯!Linux中设置’sudo’的10个小技巧
广西启用上线一批机构编制和绩效管理信息化应用成果_今日视点
微软-动视收购案夏季听证
你能接受调休吗?2023年端午节放3天后连上6天:高速不免费
4块RTX 4090显卡都够用 全汉ATX 3.0电源上新:2500W功率
环球看热讯:达实智能05月30日获深股通增持251.81万股
近九成债基今年以来收益为正 股债市场“跷跷板”效应显现
【看新股】10家拟上市银行更新业绩数据:湖北银行增长较快 药都银行不良率居首
国产显卡已追上RTX 3060 英伟达黄仁勋发声:不能轻视
环球最资讯丨6月6日开售 国服暴雪让谁来接盘!《暗黑4》媒体口碑解禁 值得一玩
世界观焦点:618白菜价 国产32GB DDR4内存杀到329元(三星颗粒+XMP超频)
顶配1999元!卢伟冰:Redmi Note 12T Pro卖的很好 很多人钟爱LCD 当前速读
简讯:全球最高芯片公司!英伟达市值突破万亿美元 GPU无敌:Intel的CPU再见
环球看热讯:ps中怎么画矩形框(ps画矩形框的操作方法)
读数据压缩入门笔记03_VLC
天天微动态丨业内人士:随着高估值隐忧基本出清 当前基础设施REITs具备较好的分红吸引力
【独家】神十六成功对接空间站组合体 太空中国人数量超越美国人
天天热讯:沙特、俄罗斯减产也没用?国际原油跌超4%:美国开始“耍赖”
世界通讯!林草碳汇政策划重点
【世界速看料】流媒体协议之RTMP详解20230513
字节狂问1小时,小伙offer到手,太狠了!(字节面试真题) 全球速读
kali-linux运行python脚本时出现”word unexpected (expecting ")")“错误的解决 热点聚焦
抄底信号?基金公司出手自购!投研人士:市场迎来左侧布局较好时点
广东汕尾海滩突现大量生蚝!官方回应:建议尽量不要吃
互联网大厂学会“放弃”:风吹过 摔不死 全跑了 环球要闻
中国人2030年前登陆月球!美国真急了
比亚迪给国产大飞机C919当引航车:国产致敬国产 比肩同行
小米汽车又有大料!博主直接实拍MS11实车 造型帅呆
慎言笃行怎么读(慎言)
乙肝表面抗体阳性是什么意思呀_乙肝表面抗体阳性是什么意思_当前信息
揭秘新疆棉背后的硬核高科技
国家发展改革委:5月30日24时起国内汽、柴油价格每吨分别提高100元和95元
汽车报道:特斯拉人才流失严重电池工程总监或另起炉灶 世界观天下
因夜间跳闸导致养猪场内空气不流通 造成5000头猪在高温下被闷死
日本专家三年研究表明 中学生入学得到手机或将导致脑力直接停滞在小学
冰淇淋已成为茅台产业生态中最具代表性前沿产品 未来加大研发新产品
《英雄联盟》外服宣布将在13.7版本后 停止支持32位Windows操作系统
意大利威尼斯主河道部分水域水体颜色变成荧光绿 改变原因暂不明确
大熊猫“园润”遭一男子泼水 成都大熊猫繁育研究基地禁止其入内
荆州海事局持续优化营商环境助力港航企业健康发展_每日关注
君主立宪制国家是什么意思(君主立宪制)-今热点
SD协议-基本概念
计算画布内旋转元素的边界坐标|今日视点
世界观焦点:售15.29-20.39万元 奇瑞瑞虎9正式上市
79888元!大疆空中电影机DJI Inspire 3正式开售_滚动
仅1399元!米家净水器600G发布:双芯7级精滤 母婴可直饮_世界播报
全球快报:工信部发布无线充电新规:手机等不能超80W
iOS网络数据指标收集
Java 集合类详解(一)_全球焦点
Java并发(七)----线程sleep、yield、线程优先级
即时设计—小组项目原型示例(附AI功能)
周二银行间回购定盘利率涨跌互现(05-30)
荣耀90系列发布:两款机型详解-世界快报
玩家在《塞尔达传说:王国之泪》造出二极管!信息时代要来了 环球播资讯
商州一出村道路泥泞出行难,主管部门:将用卵石铺设