Skip to content

Marksooxx/Video_Toolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

视频与音频处理脚本集合

本项目包含一系列使用 Python 和 FFmpeg 的自动化脚本,用于处理视频和音频文件。


脚本功能详解

音频处理脚本

所有音频处理脚本都会在当前目录下查找视频文件(如 .mp4),并在 ~audio 文件夹中寻找匹配的 .wav 音频文件,处理后的视频将输出到 ~mix 文件夹。

1. a1_SingleAudio_ReplaceOriginal.py

  • 功能: 用单个音频文件替换视频的原始音轨。
  • 输入要求: 音频文件名必须与视频文件名完全相同(例如,为 video1.mp4 匹配 video1.wav)。
  • 核心逻辑: 使用 FFmpeg 的 -map 参数,只保留视频流和新的音频流,从而丢弃原音轨。
    -map 0:v:0 -map 1:a:0
    

2. a2_SingleAudio_MixWithOriginal.py

  • 功能: 将单个音频文件与视频的原始音轨混合
  • 输入要求: 音频文件名必须与视频文件名完全相同(例如,为 video1.mp4 匹配 video1.wav)。
  • 核心逻辑: 使用 FFmpeg 的 amix 滤镜将两条音轨(原轨 + 新轨)混合。
    -filter_complex "[0:a][1:a]amix=inputs=2:duration=longest"
    

3. a3_MultiAudioAuto_MixWithOriginal_dePrefix.py

  • 功能: 自动查找多个音频文件,将它们合并后,再与视频的原始音轨混合
  • 输入要求: 音频文件名以 视频名.wav 结尾即可(例如,为 video1.mp4 匹配 audioA_video1.wav, audioB_video1.wavvideo1.wav)。
  • 核心逻辑:
    1. 先使用 amix 滤镜将所有找到的外部音频文件混合成一个临时音轨。
    2. 再使用一次 amix 滤镜,将这个临时音轨与视频的原始音轨混合。

4. a4_MultiAudioAuto_ReplaceOriginal_dePrefix.py

  • 功能: 自动查找多个音频文件,将它们合并后,替换视频的原始音轨。
  • 输入要求: 与脚本 3 相同,匹配所有以 视频名.wav 结尾的音频文件。
  • 核心逻辑:
    1. 使用 amix 滤镜将所有找到的外部音频文件混合成一个临时音轨。
    2. 使用 -map 参数将视频流与这个新的混合音轨合并,丢弃原音轨。

关于音量标准化 (normalize) 的重要说明

脚本 34 在使用 amix 滤镜混合多个外部音频时,都设置了 normalize=0

  • normalize=0 (当前配置): 禁用音量标准化。直接叠加所有音轨的音量,这会保留每个音轨的原始响度。优点是音量不会被意外降低,缺点是如果多个音轨同时达到峰值,混合后的音频可能会超过最大音量,导致削波失真(声音听起来像爆掉了)。
  • normalize=1 (FFmpeg 默认行为): 启用音量标准化。FFmpeg 会自动调整每个输入音轨的音量,确保最终混合的音轨不会超过削波阈值。这通常会导致整体音量感觉上有所降低,但能有效避免失真。

视频滤镜脚本

5. b_RGBA_to_BGRA.py

  • 功能: 遍历当前文件夹下的所有视频文件,并将其颜色通道从 RGBA 转换为 BGRA。这是一种特定的颜色格式转换,通常用于解决特定播放器或软件的兼容性问题。
  • 输入要求: 无特殊要求,直接运行即可。脚本会自动处理当前目录所有支持格式的视频文件。
  • 核心逻辑: 使用 FFmpeg 的 colorchannelmixer 滤镜来交换红色(R)和蓝色(B)通道。
    -vf 'format=rgba,colorchannelmixer=...,format=yuv420p'
    
    该滤镜链首先确保视频是 RGBA 格式,然后交换通道,最后转换为 yuv420p 像素格式以获得最佳的播放兼容性。

About

各种用于视频编辑的脚本

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages