python实现m3u8转mp4
python实现m3u8转mp4
需要用到两个版本的ffmpeg,文件及原码请到项目地址自取
https://gitee.com/z2322739526/m3u8
主要解决ts改后缀mp4后无法上传网盘播放的问题,所以需要完整处理下
tomp4.py费时费电脑,转码速度大约6分钟共处理总计5分钟视频
完整代码如下
m3u8.py
import requests
import re
import os
import urllib.parse
import time
import shutilstart_time = time.time()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
}
m3u8_url = input("m3u8_url:")
# url解码
m3u8_url = urllib.parse.unquote(m3u8_url)
r_url = '.*&vurl=(.*ver=4)'
url_list = re.findall(r_url,m3u8_url)
if len(url_list) != 0:m3u8_url = url_list[0]
if m3u8_url == '1':m3u8 = open('14.m3u8').read()
else:m3u8 = requests.get(m3u8_url,headers = headers).text
r_m3u8 = ',\n(.*?)\n#'
# re.S整体匹配
ts_all = re.findall(r_m3u8,m3u8,re.S)
print(ts_all[:10])
print('共 %d 个ts文件'%len(ts_all))
# 删除之前ts
if os.path.exists('./ts'):shutil.rmtree('./ts')os.mkdir('./ts')
if not os.path.exists("./ts"):os.mkdir("./ts")
num = 0
for ts_2 in ts_all:try:ts = requests.get(ts_2,headers = headers).contentnp = (len(str(len(ts_all)))-len(str(num)))*'0'+str(num)with open('./ts/%s.ts'%np,'wb') as fp:fp.write(ts)print('%s.ts save'%np)num += 1except:# https://jx.parwix.com:4433/player/?url=https://www.iqiyi.com/v_dql4i2lz0c.html?vfm=2008_aldbd&fv=p_02_01# 解析系统特化链接ts_2 = 'https://211.99.101.171:4433' + ts_2ts = requests.get(ts_2,headers = headers).contentnp = (len(str(len(ts_all)))-len(str(num)))*'0'+str(num)with open('./ts/%s.ts'%np,'wb') as fp:fp.write(ts)print('%s.ts save'%np)num += 1
end_time = time.time()
print('下载完成,总耗时:',end_time-start_time)
# https://sod.bunediy.com/20211217/njayYgPt/index.m3u8
tomp4.py
import sys
import os
import timestart_time = time.time()def getmax(file_dir):for root, dirs, files in os.walk(file_dir):return len(files[0])-3breakprint(sys.path[0])
start = int(input('请输入起始数字:'))
num = len(os.listdir("./ts"))
fmax = getmax("./ts")
print('最大长度', fmax)for i in range(start,num):name = (fmax - len(str(i)))*'0' + str(i)print('正在处理', name)os.system("ffmpeg-old -i " + sys.path[0] + r"\ts\%s.ts -threads 2 "%name + sys.path[0] + "\mp4\%s.mp4"%name)names = os.listdir("./mp4")
print(names)
fp = open('./list.txt','w')
for i in names:fp.write("file 'mp4/%s'\n"%i)
fp.close()end_time = time.time()
print('下载完成,总耗时:',end_time-start_time)
os.system('pause')
合并mp4.bat
ffmpeg-new -f concat -i list.txt -c copy out.mp4
pause
python实现m3u8转mp4相关推荐
- python实现m3u8转mp4方法2
python实现m3u8转mp4方法2 项目地址 https://gitee.com/z2322739526/m3u8/tree/master/new 针对chrono下载器插件保存的ts,下载后文件 ...
- 某站视频python抓取: m3u8转mp4
之前利用python简单爬虫抓过一些图片,最近想到了抓取视频.由于很多地方视频不提供下载.所以觉得有必要学习一下,以备不时之需.备注:这里仅记录碰到的网站视频实例,不保证适用所有情况. 基本概念与思路 ...
- Python 爬虫 m3u8的下载及AES解密
python爬虫 m3u8的下载及AES加密的解密 前言 2023.1.23更新 线程池版 完整代码 异步协程版 前言 这里与hxdm分享一篇关于m3u8视频流的爬取下载合并成mp4视频的方法,并且支 ...
- python下载m3u8视频_使用python 下载m3u8格式视频,并使用ffmpeg 合成视频
使用python 下载m3u8格式视频,并合成 # -*- coding: utf-8 -*- # Created on 2018/07/26 import os import requests &q ...
- Python 实现 m3u8 视频下载
Python 实现 m3u8 视频下载 m3u8 是一种基于文本的媒体播放列表文件格式,通常用于指定流媒体播放器播放在线媒体流.它是一个简单的文本文件,其中包含多个由 URI 引用的媒体资源文件的 U ...
- Python下载M3U8加密视频示例
大家好,我是小小明. 最近看到几个视频网站的地址依然是m3u8格式,不禁有了使用python进行下载的想法,虽然下载m3u8格式视频的工具很多,但如果我们自行编码就能应对更多的情况. 关于m3u8的基 ...
- m3u8转mp4无损转换的方法和技巧
为什么要将m3u8格式转换为mp4格式? 因为m3u8格式很多播放器不支持,只能在浏览器在线看,但是在线看有些不方便而且会因为网络卡顿导致播放体验效果不理想,有的m3u8是加密的,使用一些工具下载后也 ...
- m3u8转MP4 视频最最有效的办法!!!!!!!
m3u8转MP4 视频最最有效的办法!!!!!!! 手写日志. 解决办法就是这个! m3u8转MP4 视频最最有效的办法!!!!!!! http://www.oicqzone.com/soft/201 ...
- 安卓手机m3u8转为mp4格式100%有效的方法
本文以图片形式手把手演示,请读者耐心 首先推荐两款安卓手机上全网视频下载神器 X浏览器和QQ浏览器 虽然我平时用安卓手机的X浏览器(这款浏览器强烈推荐使用)的嗅探资源媒体功能就已经能下载90%的网络视 ...
最新文章
- IEs 4 Linux 新版支撑 IE 7
- apt和apt-get的区别?为什么推荐使用apt?RedHat系列(rpm包、包管理工具yum)和Debian系列(deb包、包管理工具apt-get)区别?
- [我的1024开源程序]200元仿豆瓣小程序带评论
- expdp impdp中 exclude/include 的使用
- (JAVA)File类
- KingPaper初探ThinkPHP3.1.2之目录部署(二)
- PHP轻量级在线客服系统源码 自适应手机移动端
- Number()、parseInt() 和 parseFloat() 的区别
- Django学习笔记之Ajax入门
- 2021-08-07LabVIEW编程LabVIEW控制FS400308系列气体质量流量计例程与相关资料
- 起源地杯青年足球锦标赛
- java阿里面试官直接告诉你录取答案,你还在犹豫那就晚了
- php算法,记录PHP常见的几种算法
- Keil5添加STM32芯片包
- 有个程序猿男朋友是一种什么样的体验?
- Qt 之图形(QPainterPath)
- Python 实现数字的打印
- 云图和热力图的绘制算法
- Gravatar头像注册使用教程
- 备忘录模式——实现象棋悔棋