bjjette 发表于 2024-6-18 09:11

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

本帖最后由 苏紫方璇 于 2024-6-24 11:52 编辑

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

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

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, "-i", input_files, "-acodec", "copy", "-vcodec", "copy", output_file]
    subprocess.run(ffmpeg_cmd, check=True)

def main():
    current_directory = os.getcwd()# 获取当前目录
    pattern1 = r'.*\.mpg'\# 匹配.mpg结尾的文件
    pattern2 = r'\1\.mpg'\# 匹配与第一个文件名除了替换为外的文件

    file_pairs = find_file_pairs(current_directory, pattern1, pattern2)

    for pair in file_pairs:
      base_name = os.path.splitext(pair)\# 去掉扩展名以获取基本文件名
      output_file = base_name + '.mpg'\# 输出文件名
      input_files =
      execute_ffmpeg(input_files, os.path.join(current_directory, output_file))

if __name__ == "__main__":
    main()

ot1686 发表于 2024-6-23 19:21

BAT
@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

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

ZHD00185 发表于 2024-6-18 12:03

厉害。期待更多精彩

china08 发表于 2024-6-18 12:11

有成品吗

bjjette 发表于 2024-6-18 13:26

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

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

侃遍天下无二人 发表于 2024-6-18 14:36

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

bjjette 发表于 2024-6-18 14:38

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

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1923394&highlight=B%D5%BE
看看这个,应该很好用。耐心下载试试。

bjjette 发表于 2024-6-18 14:40

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

看看这个,也很好用。
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1923394&highlight=B%D5%BE

ruanxiaoqi 发表于 2024-6-18 18:45

解决了部分人的需求
页: [1] 2
查看完整版本: 针对某网站下载视频会分开为视频和音频两个文件的批量合并解决办法