'''
删除合并后的文件
:param file_path:
:return:
'''
def deleteFile(file_path):
print("开始删除文件")
for infile in glob.glob(os.path.join(file_path, '*.ts')):
os.remove(infile)
print("文件删除完成")
import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
>>> glob.glob('**/*.txt', recursive=True)
['2.txt', 'sub/3.txt']
>>> glob.glob('./**/', recursive=True)
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']
ffmpeg -y -f concat -safe 0 -i ./vidio/1.txt -c copy ./vidio/测试.mp4
ffmpeg -ss 0:0:01 -t 0:20:00 -i 测试.mp4 -vcodec copy -acodec copy ss1.mp4
//分离视频流
ffmpeg -i 测试.mp4 -vcodec copy -an test1.mp4
//分离音频流
ffmpeg -i 测试.mp4 -acodec copy -vn test2.mp4
主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
'''
实现对章鱼大数据网站视频的获取
参数: 网站的m3u8格式
返回: 网站的ts格式文件
'''
import glob
import requests
import os
b_url = 'https://jscdn.ipieuvre.com/systemvideo/syx/python/jiapt/0101_h/0101_h.m3u8'
'''
:param file_url:
:return: 下载好的ts文件
'''
def dowend_vioid(file_url):
file_path = ".\\vidio"
if not os.path.exists(file_path):
os.mkdir(file_path)
base_url = '/'.join(b_url.split('/')[0:-1])
print(base_url)
print("开始写入文件")
for u in file_url:
url = base_url + '/' + u
print(url)
with open(file_path + '/' + '1.txt','a+') as file_txt:
file_txt.write('file '+ "F:/Python/Case/大数据实训/章鱼/vidio" + '/' + u )
file_txt.write('\n')
with open(file_path + '/' + u,'wb') as f:
f.write(requests.get(url).content)
file_txt.close()
f.close()
mergeFile(file_path,'测试')
deleteFile(file_path)
print("文件写入完成")
'''
对多个ts视频资源进行合并
:param file_path:
:param outputfile:
:return: 合并后的mp4视频
'''
def mergeFile(file_path,outputfile):
print("开始合并文件")
str = r'ffmpeg -y -f concat -safe 0 -i '+ file_path +'\\1.txt -c copy '+ file_path +'\\'+ outputfile + '.mp4'
print(str)
os.system(str)
print("文件合并完成")
'''
删除合并后的文件
:param file_path:
:return:
'''
def deleteFile(file_path):
print("开始删除文件")
for infile in glob.glob(os.path.join(file_path, '*.ts')):
os.remove(infile)
print("文件删除完成")
'''
获取要下载的文件列表
:param url:
:return: 要获取文件的URL列表
'''
def getAllUrl(url):
url_list = []
html = requests.get(url)
file_url = html.text.split('\n')
for url in file_url:
if len(url) > 0 and url[0] != '#':
url_list.append(url)
return url_list
def main():
file_url = getAllUrl(b_url)
dowend_vioid(file_url)
if __name__ == '__main__':
main()
print("程序执行完成")