吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2062|回复: 20
收起左侧

[Python 原创] 利用python自动将下载好的音视频合成

  [复制链接]
virtualspider 发表于 2023-2-11 22:24
本帖最后由 virtualspider 于 2023-2-12 11:24 编辑

来吾爱很久了,今天忽然写了点东西,就分享给大家,也算是潜水这么久做的一个贡献吧
网上看到一个油猴脚本,可以自动下载任何视频,下载后自动生成音频和视频,需要用到ffmpeg对音视频进行合成,于是花了几个小时写了一个python脚本,实现自动扫描并合成视频功能。
按照如下教程安装配置好后,将脚本放到桌面,配置用python运行,任何时候双击,都可以自动合成视频
使用此脚本前,您可能需要配置如下清单
  • 安装油猴脚本插件:https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=zh-CN
  • 安装无限制下载视频脚本,视频能播放就能下载:https://greasyfork.org/zh-CN/scripts/445751-unlimited-downloader
  • 下载ffmpeg音视频合成工具:https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-5.1.2-full_build.7z
  • 配置下载目录和ffmpeg目录,分别是脚本中的两个变量:download_dir,ffmpeg_dir
  • (可选)安装vedio speed controller插件,作用是加速播放,避免等待:https://chrome.google.com/webstore/detail/video-speed-controller/nffaoalbilbmmfgbnbgppjihopabppdk?hl=zh-CN

完成上述配置后,即可享受无限制的视频下载及合成
[Python] 纯文本查看 复制代码
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 = {}
    list1 = []
    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
                if rename.startswith('output'):
                    key1 = rename[6:]
                    list1.append(key1)
    if list1:
        print('去掉已经生成过的视频', list1)
        for key in list1:
            if key in dict1:
                del dict1[key]
    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()


2023-2-12更新:已合成的视频自动跳过

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
liu199192 + 1 热心回复!
apull + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

uzcool 发表于 2023-2-12 00:12
本帖最后由 uzcool 于 2023-2-12 00:20 编辑

我也贴一个 自己修改的批处理吧 ..


需要和FFmpeg放在同一个目录.合并完成的文件也在这个目录下..

@echo off
title 无限下载器 音视频合并 20230203

echo.
set /p audio=请将【音频】文件拖拽到此处,按下回车确认:
set /p video=请将【视频】文件拖拽到此处,按下回车确认:
ffmpeg.exe -i %audio% -i %video% -c:v copy -c:a aac -strict experimental output.mp4
echo.
echo 合并结束!
echo 文件已经输出到本地的 output.mp4 文件。
pause





不依赖任何软件 批处理还是好用的..

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
温柔 + 1 + 1 我很赞同!
Caraciold_Jr + 3 + 1 我很赞同!

查看全部评分

波仔8 发表于 2023-2-12 00:12
先收藏,后面说不定用得上,可以下视频号的视频吗?
一天一个样 发表于 2023-2-12 00:48
dzs10006 发表于 2023-2-12 08:29
感谢分享


你是我的人 发表于 2023-2-12 08:51
感谢分享
山岚 发表于 2023-2-12 09:05
波仔8 发表于 2023-2-12 00:12
先收藏,后面说不定用得上,可以下视频号的视频吗?

这是下网页视频的,视频号下载论坛里有别的软件
山岚 发表于 2023-2-12 09:37
uzcool 发表于 2023-2-12 00:12
我也贴一个 自己修改的批处理吧 ..

大佬,程序运行出现中文乱码
山岚 发表于 2023-2-12 10:21
山岚 发表于 2023-2-12 09:37
大佬,程序运行出现中文乱码

已解决,文件保存类型得选ANSI编码
山岚 发表于 2023-2-12 10:36
不知道为啥,合成出来的视频都有杂音
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-28 18:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表