python3通过ffmpeg对视频切片

#!/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命令,然后做成了切片脚本,这是自动化基础,仅供参考

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值