2025年3月14日 星期五 甲辰(龙)年 月十三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python实现将m3u8格式转换为mp4视频格式

时间:12-11来源:作者:点击数:23

开发动机:最近用手机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的碎片视频在手机里是隐藏的,需要将隐藏文件显示出来才可以将文件导出到电脑里,在安卓手机里将隐藏文件夹前面的.重命名去掉就可以了),第二个参数为要转换后文件的名字。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐