备忘4
https://github.com/orestonce/m3u8d
https://github.com/orestonce/m3u8d/releases
#! /usr/bin/python3
# hostname = 'https://media.finger66.com'
# tsParamUrl = hostname + '/posts/84222300000/MTU1NjEwNDU0ODI2Nw==.mp4.m3u8'
def xiazai():
# 下载ts文件到本地
# 放置ts文件所在目录
tsPath = input('请输入需要存放ts文件的路径:') + '/'
# 获取ts文件参数
hostname = input('请输入视频主页网址:')
m3u8_url = input('请输入m3u8网址:')
tsParamUrl = hostname + m3u8_url
import urllib.request
tsParamData = urllib.request.urlopen(tsParamUrl).read().decode('utf-8')
# print(tsParamData)
import re
pat = '/(.*?).ts'
tsParamArr = re.compile(pat).findall(tsParamData)
#爬取ts文件到本地
for n in range(0,len(tsParamArr)):
strArr = tsParamArr[n].split('/')
localTSFileName = strArr[len(strArr)-1]+'.ts'
tsLink = hostname + '/' + tsParamArr[n] + '.ts'
urllib.request.urlretrieve(tsLink, tsPath+localTSFileName )
#print(tsLink)
print("下载完成,开始合并ts文件!!!")
import os
# 获取所有的ts文件
path_list = os.listdir(tsPath)
# 对文件进行排序并将排序后的ts文件路径放入列表中
path_list.sort()
li = [os.path.join(tsPath, filename) for filename in path_list]
# 将ts路径并合成一个字符参数
tsfiles = '|'.join(li)
#print(tsfiles)
# 指定输出文件名称
saveMp4file = tsPath + '下载完成.mp4'
# 调取系统命令使用ffmpeg将ts合成mp4文件
cmd = 'ffmpeg -i "concat:%s" -acodec copy -vcodec copy -absf aac_adtstoasc %s' % (tsfiles, saveMp4file)
os.system(cmd)
print("合并ts文件完成!!!")
def hecheng():
# 将下载到本地的ts文件合成mp4文件
#
import os
tsPath = input('请输入需要存放ts文件的路径:') + '/'
#获取所有的ts文件
path_list = os.listdir(tsPath)
#对文件进行排序并将排序后的ts文件路径放入列表中
path_list.sort()
li = [os.path.join(tsPath,filename) for filename in path_list]
#将ts路径并合成一个字符参数
tsfiles = '|'.join(li)
#print(tsfiles)
#指定输出文件名称
saveMp4file = tsPath + '下载完成.mp4'
#调取系统命令使用ffmpeg将ts合成mp4文件
cmd = 'ffmpeg -i "concat:%s" -acodec copy -vcodec copy -absf aac_adtstoasc %s' % (tsfiles, saveMp4file)
os.system(cmd)
while True:
print("*" * 80)
print("")
print("\t\t\t欢迎使用 【视频工具】 V 1.0")
print("")
print('\t简介:直接下载或是合成已经下载的ts 文件。。。。。"')
print("")
print("")
print("\t\t\t\t选择 [1] 下载视频文件")
print("")
print("\t\t\t\t选择 [2] 把已经下载的ts文件合成MP4文件")
print("")
print("\t\t\t\t选择 [0] 退出程序")
print("")
print("*" * 80)
action_str = input("\t\t\t请选择要操作的程序:")
print("\t\t\t您选择的操作是 【%s】" % action_str)
if action_str in ["1", "2"]:
if action_str == "1":
xiazai()
print('主人下载完成,请到文件目录查看!!!')
elif action_str == "2":
hecheng()
elif action_str == "0":
print("\t\t\t欢迎再次使用【视频工具系统】")
break
else:
print("\t\t\t您输入的不正确请重新输入!")