Python把mkv批量转为Mp4

 需要下载ffmpeg

import subprocess
import threading
import os


def convert_mkv_to_mp4(input_file, output_file):
    # 使用ffmpeg进行转换
    command = [
        'E:\\ffmpeg\\bin\\ffmpeg',
        '-i', input_file,
        '-c:v', 'copy',  # 复制视频流
        '-c:a', 'aac',  # 使用AAC编码音频
        output_file
    ]
    try:
        subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        print(f"成功转换: {input_file} -> {output_file}")
    except subprocess.CalledProcessError as e:
        print(f"转换失败: {input_file} -> {output_file}")
        print(e.stderr.decode())


def worker(mkv_file, output_dir):
    base_name = os.path.splitext(os.path.basename(mkv_file))[0]
    output_file = os.path.join(output_dir, f"{base_name}.mp4")
    convert_mkv_to_mp4(mkv_file, output_file)


def convert_multiple_mkv_to_mp4(mkv_files, output_dir, num_threads=5):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

        # 创建线程列表
    threads = []

    # 使用for循环和线程锁(如果需要)来创建线程
    for i in range(0, len(mkv_files), num_threads):
        for mkv_file in mkv_files[i:i + num_threads]:
            t = threading.Thread(target=worker, args=(mkv_file, output_dir))
            t.start()
            threads.append(t)

            # 等待所有线程完成
    for t in threads:
        t.join()

    # 示例使用




if __name__ == '__main__':
    # 假设你有一个包含mkv文件的目录
    input_dir = 'E:\\AI混剪\\mkv'
    output_dir = 'E:\\AI混剪\\mp4'

    # 获取所有mkv文件
    mkv_files = [os.path.join(input_dir, file) for file in os.listdir(input_dir) if file.endswith('.mkv')]
    print(mkv_files)
    # 并发转换视频
    convert_multiple_mkv_to_mp4(mkv_files, output_dir, num_threads=5)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lytcreate.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值