python实现m3u8格式转换为mp4视频格式
作者:septwolves2015 时间:2021-05-09 00:48:02
开发动机:最近用手机QQ浏览器下载了一些视频,视频越来越多,占用了手机内存,于是想把下载的视频传到电脑上保存,可后来发现这些视频都是m3u8格式的,且这个格式的视频都切成了碎片,存在电脑里不方便查看,于是想把它转换为其他可以直接打开播放的完整视频,到网上找了一些工具,都不怎么好用,后来发现一个手机端的“缓冲合并工具”,倒是可以用,但是合并的视频顺序是乱的,碎片的视频顺序还需要用户手动调整,感觉太耽误时间了,于是自己打算写一个转换工具。
直接上代码:(程序的文件名为:convert_m3u8.py)
# -*- coding:utf-8 -*-
import sys
import os
from glob import glob
#获取需要转换的路径
def get_user_path(argv_dir):
if os.path.isdir(argv_dir):
return argv_dir
elif os.path.isabs(argv_dir):
return argv_dir
else:
return False
#对转换的TS文件进行排序
def get_sorted_ts(user_path):
ts_list = glob(os.path.join(user_path,'*.ts'))
#print(ts_list)
boxer = []
for ts in ts_list:
if os.path.exists(ts):
#print(os.path.splitext(os.path.basename(ts)))
file,_ = os.path.splitext(os.path.basename(ts))
boxer.append(int(file))
boxer.sort()
#print(boxer)
return boxer
#文件合并
def convert_m3u8(boxer,o_file_name):
#cmd_arg = str(ts0)+"+"+str(ts1)+" "+o_file_name
tmp = []
for ts in boxer:
tmp.append(str(ts)+'.ts')
cmd_str = '+'.join(tmp)
exec_str = "copy /b "+cmd_str+' '+o_file_name
#print("copy /b "+cmd_str+' '+o_file_name)
os.system(exec_str)
if __name__=='__main__':
#print(sys.argv[1:])
argv_len = len(sys.argv)
if argv_len == 3:
o_dir,o_file_name =sys.argv[1:]
#print(o_dir+":"+o_file_name)
user_path = get_user_path(o_dir)
#print(user_path)
if not user_path:
print("您输入的路径不正确,:-(");
else:
if os.path.exists(os.path.join(user_path,o_file_name)):
print('目标文件已存在,程序停止运行。')
exit(0)
os.chdir(user_path)
#convert_m3u8('2.ts','4.ts',o_file_name)
boxer = get_sorted_ts(user_path)
convert_m3u8(boxer,o_file_name)
#print(os.getcwd())
else:
print("参数个数非法");
注:代码不多,原理也很简单,就是把各个碎片视频按照顺序合并为一个视频文件。
使用方法如下:
python convert_m3u8.py m3u8视频的目录 要转换后文件的名字
其中第一个参数为m3u8视频的目录(m3u8的碎片视频在手机里是隐藏的,需要将隐藏文件显示出来才可以将文件导出到电脑里,在安卓手机里将隐藏文件夹前面的.重命名去掉就可以了),第二个参数为要转换后文件的名字。
来源:http://blog.csdn.net/septwolves2015/article/details/76408742
标签:python,m3u8,mp4
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
基于python实现模拟数据结构模型
2022-11-12 23:44:01
PyTorch学习笔记之回归实战
2023-09-17 10:26:19
![](https://img.aspxhome.com/file/2023/2/78752_0s.png)
教你使用Python的pygame模块实现拼图游戏
2022-06-28 03:20:20
Python调用Windows API函数编写录音机和音乐播放器功能
2021-06-13 19:03:55
![](https://img.aspxhome.com/file/2023/7/76707_0s.jpg)
Python使用APScheduler实现定时任务过程解析
2023-01-23 19:20:35
![](https://img.aspxhome.com/file/2023/0/82640_0s.png)
无法使用pip命令安装python第三方库的原因及解决方法
2023-11-24 00:32:33
![](https://img.aspxhome.com/file/2023/1/64631_0s.jpg)
python文件读取失败怎么处理
2023-05-06 17:14:46
在IE6中用PNG图片实现半透明效果
2008-05-30 13:14:00
![](https://img.aspxhome.com/file/UploadPic/20085/30/2008530132733867s.jpg)
python操作xml文件详细介绍
2022-02-02 23:11:57
详解Python中的__getitem__方法与slice对象的切片操作
2022-04-26 19:54:55
python pdb调试方法分享
2022-02-15 22:39:22
ASP中页面限权访问的几种方法
2007-12-13 06:53:00
使用tf.keras.MaxPooling1D出现错误问题及解决
2021-02-07 05:01:28
![](https://img.aspxhome.com/file/2023/1/99241_0s.png)
python gensim使用word2vec词向量处理中文语料的方法
2023-02-25 08:12:56
![](https://img.aspxhome.com/file/2023/0/81500_0s.png)
详解pandas.DataFrame中删除包涵特定字符串所在的行
2023-08-23 23:37:45
![](https://img.aspxhome.com/file/2023/6/76966_0s.png)
Pyinstaller打包工具的使用以及避坑
2023-11-07 18:50:59
解决Pandas的DataFrame输出截断和省略的问题
2021-10-28 10:22:19
![](https://img.aspxhome.com/file/2023/5/76815_0s.jpg)
微软建议的ASP性能优化28条守则(9)
2005-05-30 16:05:00
Python通用循环的构造方法实例分析
2022-03-30 00:03:56
Python迭代器和生成器介绍
2022-03-22 07:41:24
![](https://img.aspxhome.com/file/2023/2/97772_0s.png)