#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : 切片.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2022/3/17
# 自动切片程序,参考 https://www.cnblogs.com/fieldtianye/p/13427303.html
# 需要本地有ffmpeg程序并添加到了环境变量
import os
class self_video:
def __init__(self,input,output):
self.input = input
self.output = output
os.makedirs(self.input,exist_ok=True)
os.makedirs(self.output,exist_ok=True)
os.makedirs(self.output+'/m3u8',exist_ok=True)
os.makedirs(self.output+'/ts',exist_ok=True)
def convert_mp4(self,input,output):
input = os.path.abspath(self.input+'/'+input)
output = os.path.abspath(self.output+'/'+output)
print(input)
print(output)
if not os.path.exists(input):
print('输入文件不存在!!!')
return None
cmd = f'ffmpeg -i {input} -y -c:v libx264 -strict -2 {output}'
print(f'开始执行命令{cmd}')
os.system(cmd)
print('mp4转换命令执行完毕')
return output
def mp4_to_ts(self,mp4,ts):
ts = self.output+'/'+ts
cmd = f'ffmpeg -y -i {mp4} -vcodec copy -acodec copy -vbsf h264_mp4toannexb {ts}'
print(f'开始执行命令{cmd}')
os.system(cmd)
print('mp4转换ts命令执行完毕')
return ts
def ts_split(self,ts,time=10):
name = ts.split('.')[0].split('/')[-1]
m3u8 = f'{self.output}/m3u8/{name}.m3u8'
tsp = f'{self.output}/ts/{name}-%04d.ts'
cmd = f'ffmpeg -i {ts} -c copy -map 0 -f segment -segment_list {m3u8} -segment_time {time} {tsp}'
print(f'开始执行命令{cmd}')
os.system(cmd)
print('ts切割多段执行完毕')
return m3u8
if __name__ == '__main__':
qp = self_video('input','output')
output = qp.convert_mp4('1.mp4','2.mp4')
if output:
ts = qp.mp4_to_ts(output,'1.ts')
qp.ts_split(ts,10)
其实就是封装了几个cmd命令,然后做成了切片脚本,这是自动化基础,仅供参考