FFmpeg × PowerShell 批量合并音视频

[前言]

工作原理: 通过 Windows 系统自带的 PowerShell 终端让 FFmpeg 批量合并音视频。可将大量音频流和视频流分离的视频文件合并为有声音的视频文件,如哔哩哔哩的缓存文件等

使用方法: 新建一个文本文档 merge.txt,将代码复制粘贴进去后保存,更改文件后缀名为 "ps1",如:merge.ps1,右键单击文件,选择 使用 PowerShell 运行

适用范围:

  • 方案一适用于合并有一定命名规则的音视频文件,如将 a.mp4 和 a(1).mp4 合并为 a_merge.mp4
  • 方案二适用于合并同名的音视频文件,如将 a.mp4 和 a.m4a 合并为 a_merge.mp4

版权声明: 本篇文章的代码并非原创,因此会注明出处,著作权归原作者所有,如有侵权请联系删除


方案一

原作者地址:Lee-7723

将 *.mp4 结尾的视频文件与 *(1).mp4 结尾的音频文件合并成 *_merge.mp4 结尾的视频文件 (* 是通配符,即文件名)

视频文件和音频文件的命名规则都可根据实际情况修改 例如:音频文件都是以 *.m4a 结尾,则将 $audio (第6行)的 "(1).mp4" 修改为 ".m4a"

注意事项:

  • 音视频的文件名和文件路径都尽量不要出现中文和空格,不然可能会报错
  • $video 和 $audio 内的参数尽量同步修改,以确保匹配正确的文件
# 选择文件名里不带 "(1)" 的 .mp4 文件作为视频文件
$video = (ls -name -Exclude '*(1)*' -Include '*.mp4')

for ($i = 0; $i-lt $video.length; $i++) {

    # 替换文件名里 ".mp4" 为 "(1).mp4" 以匹配音频文件
    $audio = $video[$i].replace('.mp4','(1).mp4')

    # 在合并后的视频文件名后添加 "_merge" 以便区分
    $merge = $video[$i].replace('.mp4','_merge.mp4')

    ffmpeg -hide_banner -i $video[$i] -i $audio -map 0 -map 1 -c copy $merge
}

pause # 执行结束后暂停

方案二

原作者地址:小小伟yo

将目录下所有同名的 *.mp4 和 *.m4a 合并为 *_merged.mp4 (* 是通配符,即文件名)

# 获取输入文件夹中的所有文件
$files = Get-ChildItem -Path ".\"

# 循环处理每个文件
foreach ($file in $files) {
    # 检查文件是否是mp4
    if ($file.Extension -eq ".mp4") {

        # 构造对应的音频文件名
        $audioFile = Join-Path -Path ".\" -ChildPath ($file.BaseName + ".m4a")

        # 构造输出文件名
        $outputFile = Join-Path -Path ".\" -ChildPath ($file.BaseName + "_merged.mp4")

        # 检查输出文件是否已存在,如果存在则跳过
        if (Test-Path $outputFile) {
            Write-Host "Output file $outputFile already exists, skip merging"
            continue
        }

        # 检查对应的音频文件是否存在,如果不存在则跳过
        if (-not $audioFile -or -not (Test-Path $audioFile)) {
            Write-Host "Audio file $audioFile does not exist or is empty, skip merging"
            continue
        }

        # 调用ffmpeg合并视频和音频
        ffmpeg -i $file.FullName -i $audioFile -c:v copy -c:a copy $outputFile

        Write-Host "Merge completed: $($file.Name) + $($audioFile)"
    }
}

Write-Host "Done"

# 执行结束后暂停
pause

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇