返回顶部
首页 > 资讯 > 后端开发 > Python >怎么在Python中利用m3u8拼接mp4视频文件
  • 332
分享到

怎么在Python中利用m3u8拼接mp4视频文件

2023-06-06 18:06:03 332人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇文章为大家展示了怎么在python中利用m3u8拼接mp4视频文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python可以做什么Python是一种编程语言,内置了许多有效的工具,Pytho

本篇文章为大家展示了怎么在python中利用m3u8拼接mp4视频文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析人工智能web开发等。

一、关于m3u8:

m3u8是苹果公司推出一种视频播放标准,是m3u的一种,不过编码方式是utf-8,是一种文件检索格式,将视频切割成一小段一小段的ts格式的视频文件,然后存在服务器中(现在为了减少I/o访问次数,一般存在服务器的内存中),通过m3u8解析出来路径,然后去请求。

示例:

#EXTM3U#EXT-X-TARGETDURATioN:10#EXTINF:9,Http://data.video.iqiyi.com/videos/vts/20210301/69/b8/73ad4ef04fde4586ef2799ecd67241ce.ts?qypid=2645242154145600_04000000001000000000_96&start=496696&end=779448&contentlength=282752&sd=20200&qdv=1&qd_uid=0&qd_tvid=2645242154145600&qd_vip=0&qd_src=02029022240000000000&qd_tm=1614590393988&qd_ip=0&qd_p=0&qd_k=4eb685f1966cbd08e6a9648fe0b8c007&ve=&sgti=&dfp=&qd_sc=f9a4f133a622871b6739734615ef178d#EXTINF:9,http://data.video.iqiyi.com/videos/vts/20210301/69/b8/73ad4ef04fde4586ef2799ecd67241ce.ts?qypid=2645242154145600_04000000001000000000_96&start=779448&end=1008432&contentlength=228984&sd=29200&qdv=1&qd_uid=0&qd_tvid=2645242154145600&qd_vip=0&qd_src=02029022240000000000&qd_tm=1614590393988&qd_ip=0&qd_p=0&qd_k=4eb685f1966cbd08e6a9648fe0b8c007&ve=&sgti=&dfp=&qd_sc=f9a4f133a622871b6739734615ef178d#EXTINF:9,http://data.video.iqiyi.com/videos/vts/20210301/69/b8/73ad4ef04fde4586ef2799ecd67241ce.ts?qypid=2645242154145600_04000000001000000000_96&start=5934408&end=6141020&contentlength=206612&sd=198733&qdv=1&qd_uid=0&qd_tvid=2645242154145600&qd_vip=0&qd_src=02029022240000000000&qd_tm=1614590393988&qd_ip=0&qd_p=0&qd_k=4eb685f1966cbd08e6a9648fe0b8c007&ve=&sgti=&dfp=&qd_sc=f9a4f133a622871b6739734615ef178d#EXT-X-ENDLIST

预览器打开会出现下载ts文件

怎么在Python中利用m3u8拼接mp4视频文件

我们想要的mp4文件就是一个个ts文件按照顺序拼接成的,废话不多说直接上代码。

# -*- coding:utf-8 -*- """Author:SPIDERMANTime: 2021/3/1 Software: PyCharm"""import loggingimport osfrom glob import iglobimport requestsimport m3u8from urllib.parse import urljoinfrom concurrent.futures import ThreadPoolExecutorfrom natsort import natsortedclass M3u8Download: def __init__(self,m3u8_url):  self.m3u8_url = m3u8_url  self.headers = {   'User-Agent': 'Mozilla/5.0 (windows NT 10.0; WOW64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/67.0.3396.99 Safari/537.36'  }  self.threadpool = ThreadPoolExecutor(max_workers=10)  self.file_name = 'weibo.mp4'  logging.basicConfig(fORMat='[%(asctime)s][*%(levelname)s]:%(message)s',       level=logging.INFO) def get_ts_url(self,m3u8_url):  """  解析ts_url  :param m3u8_url:  :return:  """  m3u8_obj = m3u8.load(m3u8_url)  base_uri = m3u8_obj.base_uri  logging.info('[*]get_base_uri'+base_uri)  for seg in m3u8_obj.segments:   yield urljoin(base_uri, seg.uri) def download__ts(self, urlinfo):  """  下载ts文件  :param urlinfo:  :return:  """  url, ts_name = urlinfo  res = requests.get(url, headers=self.headers)  with open(ts_name, 'wb') as fp:   fp.write(res.content)  logging.info('[*download]'+ts_name) def download_all_ts(self):  """  下载所有函数  :return:  """  ts_urls = self.get_ts_url(self.m3u8_url)  logging.info('[*download]download:'+self.m3u8_url)  for index, ts_url in enumerate(ts_urls):   print(ts_url)   self.threadpool.submit(self.download__ts, [ts_url, f'{index}.ts'])  self.threadpool.shutdown() def remove_ts(self,ts_path):  """  删除ts文件  :param ts_path:  :return:  """  for ts in iglob(ts_path):   os.remove(ts)  logging.info('[*remove]remove all *.ts') def run(self):  self.download_all_ts()  ts_path = '*.ts'  all_ts = iglob(ts_path)  with open(self.file_name, 'wb') as fn:   #根据ts排序   for ts in natsorted(all_ts):    #读ts写mp4    with open(ts, 'rb') as ft:     scline = ft.read()     fn.write(scline)  self.remove_ts(ts_path)if __name__ == '__main__': m3u8Download = M3u8Download('https://cache.m.iqiyi.com/mus/1618469868576801/a34fec3fc63Db2c1bb4c15f53cd513e1/afbe8fd3d73448c9/0/20210301/69/b8/670962cfd6b9166c87a21728808fe6a2.m3u8?qd_originate=tmts_py&tvid=2645242154145600&bossStatus=0&qd_vip=0&px=&src=02029022240000000000&prv=&previewType=&previewTime=&from=&qd_time=1614590979725&qd_p=0&qd_asc=636bb14ab52facec684335546d2d60ec&qypid=2645242154145600_04000000001000000000_96&qd_k=4eb685f1966cbd08e6a9648fe0b8c007&isdol=0&code=2&ff=f4v&iswb=1&vf=2198359907d7f173fed0b6eabca18b29&np_tag=Nginx_part_tag&pt_sc=d855f47d523c5a4fab67f5b10be3c475&pt=180&pt_tag_tm=1614590979827') m3u8Download.run()

上述内容就是怎么在Python中利用m3u8拼接mp4视频文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网Python频道。

--结束END--

本文标题: 怎么在Python中利用m3u8拼接mp4视频文件

本文链接: https://lsjlt.com/news/248095.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在Python中利用m3u8拼接mp4视频文件
    本篇文章为大家展示了怎么在Python中利用m3u8拼接mp4视频文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pytho...
    99+
    2023-06-06
  • 使用Python怎么在m3u8文件中提取视频
    这期内容当中小编将会给大家带来有关使用Python怎么在m3u8文件中提取视频,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. HLS协议与m3u8文件  HLS,即 H T T P   L ...
    99+
    2023-06-15
  • 怎么使用PHP将视频文件转换为MP4格式
    这篇文章主要讲解了“怎么使用PHP将视频文件转换为MP4格式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PHP将视频文件转换为MP4格式”吧!首先,我们需要了解几个概念。一个视频文...
    99+
    2023-07-06
  • 怎么用Python实现多个MP4合成视频
    这篇文章主要介绍“怎么用Python实现多个MP4合成视频”,在日常操作中,相信很多人在怎么用Python实现多个MP4合成视频问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python实现多个MP4合...
    99+
    2023-06-20
  • python怎么读取视频文件
    在python中使用cv2库读取视频文件的方法:1.新建python项目;2.导入cv2库;3.使用VideoCapture()函数获取视频路径;4.使用read()函数读取视频;具体步骤如下:首先,打开python,并新建一个python...
    99+
    2024-04-02
  • 怎么在python中利用列表解析式拼接列表
    今天就跟大家聊聊有关怎么在python中利用列表解析式拼接列表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,P...
    99+
    2023-06-14
  • 怎么在Python中拼接图像
    本篇文章给大家分享的是有关怎么在Python中拼接图像,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科...
    99+
    2023-06-14
  • 怎么在python中拼接列表
    怎么在python中拼接列表?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对...
    99+
    2023-06-14
  • 怎么在python中拼接变量
    怎么在python中拼接变量?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、...
    99+
    2023-06-14
  • 网站上flv/MP4等格式的视频文件播放不出来怎么办
    小编给大家分享一下网站上flv/MP4等格式的视频文件播放不出来怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在做一个网站时,发现视频文件,比如flv,MP...
    99+
    2023-06-08
  • Python怎么利用ffmpeg处理视频素材
    这篇文章主要介绍“Python怎么利用ffmpeg处理视频素材”,在日常操作中,相信很多人在Python怎么利用ffmpeg处理视频素材问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python怎么利用ffm...
    99+
    2023-06-21
  • Android中怎么利用MediaPlay播放音频和视频
    Android中怎么利用MediaPlay播放音频和视频,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。实现MediaPlay的基本步骤是创建MediaPlay对象调用setDa...
    99+
    2023-06-04
  • 怎么在Python中利用xlwings读取Excel文件
    怎么在Python中利用xlwings读取Excel文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 处理要求:一个Excel表格中包含了3万条记录,其中B,C两个列记录...
    99+
    2023-06-06
  • 怎么在python中利用字节处理文件
    这期内容当中小编将会给大家带来有关怎么在python中利用字节处理文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、...
    99+
    2023-06-14
  • 怎么在python中利用Pycharm调试视图
    这期内容当中小编将会给大家带来有关怎么在python中利用Pycharm调试视图,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int...
    99+
    2023-06-15
  • 怎么在python中使用opencv实现视频抽帧
    怎么在python中使用opencv实现视频抽帧,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、数据集简述:    &...
    99+
    2023-06-15
  • 怎么在Python中利用流式读取大文件
    怎么在Python中利用流式读取大文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎...
    99+
    2023-06-14
  • 怎么在python中利用urlretrieve获取远程文件
    今天就跟大家聊聊有关怎么在python中利用urlretrieve获取远程文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许...
    99+
    2023-06-14
  • 怎么在python中利用os处理系统文件
    怎么在python中利用os处理系统文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python有哪些常用库python常用的库:1.requesuts;2.scrapy...
    99+
    2023-06-14
  • 怎么在python中利用Package设置文件入口
    本篇文章给大家分享的是有关怎么在python中利用Package设置文件入口,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作