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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值