吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2056|回复: 16
上一主题 下一主题
收起左侧

[Python 原创] 针对某网站下载视频会分开为视频和音频两个文件的批量合并解决办法

[复制链接]
跳转到指定楼层
楼主
bjjette 发表于 2024-6-18 09:11 回帖奖励
本帖最后由 苏紫方璇 于 2024-6-24 11:52 编辑

某网站故弄玄虚,下载后一个为视频 [00].mp4, 一个为音频[01].mp4,懂得都懂,不多赘述和评价。下面做了一个小python程序,完成整个目录下面将音频和视频合并为一个可以自由播放的视频。
原理大概如下:将当前目录下的所有"[00].mpg"结尾的文件和所有"[01].mpg"结尾的文件,执行一下操作。 举例 aa[00].mpg 和 aa[01].mpg文件: 执行 ffmpeg.exe -i aa[00].mpg -i aa[01].mpg -acodec copy -bcodec copy aa.mpg。
代码如下
注意:

在这个脚本中,我使用了正则表达式来匹配和构建文件名对。
我假设了ffmpeg.exe在系统路径中。如果不是这样,你需要在ffmpeg_cmd列表中提供ffmpeg.exe的完整路径。
脚本使用subprocess.run()来执行ffmpeg命令,并检查是否有任何错误发生(通过check=True)。
脚本将输出文件命名为与输入文件的基本名称相同,但扩展名为.mpg(去除了[00]或[01])。

[Python] 纯文本查看 复制代码
import os  
import subprocess  
import re  
  
def find_file_pairs(directory, pattern1, pattern2):  
    pairs = []  
    for filename in os.listdir(directory):  
        if re.match(pattern1, filename):  
            base_name = re.sub(pattern1, '', filename)  
            pair_file = base_name + pattern2  
            if os.path.exists(os.path.join(directory, pair_file)):  
                pairs.append((filename, pair_file))  
    return pairs  
  
def execute_ffmpeg(input_files, output_file):  
    \# 这里假设ffmpeg.exe在系统路径中,否则需要提供完整路径  
    ffmpeg_cmd = ["ffmpeg", "-i", input_files[0], "-i", input_files[1], "-acodec", "copy", "-vcodec", "copy", output_file]  
    subprocess.run(ffmpeg_cmd, check=True)  

def main():  
    current_directory = os.getcwd()  # 获取当前目录  
    pattern1 = r'.*\[00\].mpg'  \# 匹配[00].mpg结尾的文件  
    pattern2 = r'\1\[01\].mpg'  \# 匹配与第一个文件名除了[00]替换为[01]外的文件  
  
    file_pairs = find_file_pairs(current_directory, pattern1, pattern2)  
  
    for pair in file_pairs:  
        base_name = os.path.splitext(pair[0])[0]  \# 去掉扩展名以获取基本文件名  
        output_file = base_name + '.mpg'  \# 输出文件名  
        input_files = [os.path.join(current_directory, f) for f in pair]  
        execute_ffmpeg(input_files, os.path.join(current_directory, output_file))  
  
if __name__ == "__main__":  
    main()


免费评分

参与人数 5吾爱币 +8 热心值 +4 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
qq9953 + 1 谢谢@Thanks!
ruanxiaoqi + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
oxs + 1 + 1 用心讨论,共获提升!
wuaiwxh + 1 我很赞同!

查看全部评分

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

推荐
ot1686 发表于 2024-6-23 19:21
BAT
[Plain Text] 纯文本查看 复制代码
@echo off
setlocal

:: 设置视频文档名和音频文档名
set "video_input=video.mp4"
set "audio_input=audio.mp3"

:: 设置输出文档名
set "output=merged_video_with_audio.mp4"

:: 使用ffmpeg合并视频和音频
ffmpeg -i "%video_input%" -i "%audio_input%" -c:v copy -c:a aac -strict experimental "%output%"

:: 批量档结束
推荐
 楼主| bjjette 发表于 2024-6-18 10:17 |楼主
netsome 发表于 2024-6-18 10:12
学到了,之前看到姬下载视频音频后会自动合并,原来是网站作妖

没有办法,我自己写了python代码合并,也可以手工合并,就是执行那个命令。ffmpeg.exe,这个需要网上下载。多的话建议批处理否则必将累。
沙发
netsome 发表于 2024-6-18 10:12
学到了,之前看到姬下载视频音频后会自动合并,原来是网站作妖
4#
ZHD00185 发表于 2024-6-18 12:03
厉害。期待更多精彩
5#
china08 发表于 2024-6-18 12:11
有成品吗
6#
 楼主| bjjette 发表于 2024-6-18 13:26 |楼主

因为需要ffmpeg.exe的路径,不是系统缺省,故没有生成exe文件,使用python直接编译就可以
7#
侃遍天下无二人 发表于 2024-6-18 14:36
B站是吧,这样也有好处,有些广播剧可以只下音频。文件不多的话可以用猫抓直接下到缓存中,然后调用在线ffmpeg合并
8#
 楼主| bjjette 发表于 2024-6-18 14:38 |楼主
侃遍天下无二人 发表于 2024-6-18 14:36
B站是吧,这样也有好处,有些广播剧可以只下音频。文件不多的话可以用猫抓直接下到缓存中,然后调用在线ffm ...

https://www.52pojie.cn/forum.php ... p;highlight=B%D5%BE
看看这个,应该很好用。耐心下载试试。

点评

这个我知道,B站下载视频的api都有人放github了,理论上大家都能自己写  详情 回复 发表于 2024-6-18 19:06
9#
 楼主| bjjette 发表于 2024-6-18 14:40 |楼主
10#
ruanxiaoqi 发表于 2024-6-18 18:45
解决了部分人的需求
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 12:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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