利用python自动将下载好的音视频合成

网上看到一个油猴脚本,可以自动下载任何视频,下载后自动生成音频和视频,需要用到ffmpeg对音视频进行合成,于是花了几个小时写了一个python脚本,实现自动扫描并合成视频功能

使用此脚本前,您可能需要配置如下清单

  • 安装油猴脚本

  • 下载ffmpeg音视频合成工具

  • 配置下载目录和ffmpeg目录,分别是脚本中的两个变量:download_dir,ffmpeg_dir

完成上述配置后,即可享受无限制的视频下载及合成

import os
import tkinter as tk
import tkinter.messagebox


def alert_success():
    if (tk.messagebox.askquestion(title='提示', message='合并完成,是否打开下载文件夹?') == 'yes'):
        output_dir = r'C:\Users\Administrator\Downloads'
        os.system("explorer.exe %s" % output_dir)


def trim_file(file_name):
    if isinstance(file_name, str):
        if file_name.startswith('audio') or file_name.startswith('video'):
            if ' ' in file_name:
                rename = file_name.replace(' ', '')
                print('清除文件名中的空格', file_name)
                os.rename(download_dir + '\\' + file_name, download_dir + '\\' + rename)
                return rename
    return file_name

def scan_download_dir(download_dir):
    dict1 = {}
    g = os.walk(download_dir)
    for path, dir_list, file_list in g:
        for file_name in file_list:
            rename = trim_file(file_name)
            if isinstance(rename, str):
                if rename.startswith('audio'):
                    key1 = rename[5:]
                    if key1 in dict1:
                        dict2 = dict1[key1]
                    else:
                        dict2 = {}
                    dict2['audio'] = os.path.join(path, rename)
                    dict1[key1] = dict2
                if rename.startswith('video'):
                    key1 = rename[5:]
                    if key1 in dict1:
                        dict2 = dict1[key1]
                    else:
                        dict2 = {}
                    dict2['video'] = os.path.join(path, rename)
                    dict1[key1] = dict2
    return dict1


def synthetic_video(dict1):
    for key in dict1:
        dict2 = dict1[key]
        if isinstance(dict2, dict):
            audio = dict2['audio']
            video = dict2['video']
            output = download_dir + '\\output' + key
            cmd = f'{ffmpeg_dir} -i {video} -i {audio} -c:v copy -c:a aac -strict experimental {output}'
            print('执行脚本', cmd)
            os.system(cmd)


if __name__ == '__main__':
    print('扫描下载文件夹')
    download_dir = r'C:\Users\Administrator\Downloads'
    ffmpeg_dir = r'D:\program\ffmpeg-5.1.2-full_build\bin\ffmpeg'

    dict1 = scan_download_dir(download_dir)
    if dict1:
        print('循环合成文件并输出', dict1)
        synthetic_video(dict1)

        print('弹窗提醒')
        alert_success()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值