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

查看 60|回复 9
作者:bjjette   
某网站故弄玄虚,下载后一个为视频 [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])。
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()

文件, 视频

bjjette
OP
  


netsome 发表于 2024-6-18 10:12
学到了,之前看到姬下载视频音频后会自动合并,原来是网站作妖

没有办法,我自己写了python代码合并,也可以手工合并,就是执行那个命令。ffmpeg.exe,这个需要网上下载。多的话建议批处理否则必将累。
netsome   

B站是吧,这样也有好处,有些广播剧可以只下音频。文件不多的话可以用猫抓直接下到缓存中,然后调用在线ffmpeg合并
ZHD00185   

学到了,之前看到姬下载视频音频后会自动合并,原来是网站作妖
china08   

厉害。期待更多精彩
bjjette
OP
  

有成品吗
bjjette
OP
  


china08 发表于 2024-6-18 12:11
有成品吗

因为需要ffmpeg.exe的路径,不是系统缺省,故没有生成exe文件,使用python直接编译就可以
bjjette
OP
  


侃遍天下无二人 发表于 2024-6-18 14:36
B站是吧,这样也有好处,有些广播剧可以只下音频。文件不多的话可以用猫抓直接下到缓存中,然后调用在线ffm ...

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


china08 发表于 2024-6-18 12:11
有成品吗

看看这个,也很好用。
https://www.52pojie.cn/forum.php ... p;highlight=B%D5%BE
bjjette
OP
  

解决了部分人的需求
您需要登录后才可以回帖 登录 | 立即注册

返回顶部