powershell遍历目录调用ffmpeg合并m3u8文件为mp4

229 阅读1分钟

批量下载了一些视频分别放在很多目录里,ts片段和m3u8都处理好了放目录里,目录里放了index.m3u8文件和对应的key,但是逐个打开合并太多了,调用ffmpeg合并到目录名同名的mp4文件

# 修改编码为UTF-8

chcp 65001

Write-Host('当前powershell版本 ', ($psversiontable).PSVersion);

Get-ChildItem | ForEach-Object -Process {
    # 你可以使用 -is 运算符检查值的类型。 System.IO.FileInfo
    if (($_ -is [System.IO.DirectoryInfo]) -and ($_.name -cnotlike '.*')) {
        Write-Host($_);
        # 切换目录
        Set-Location -Path $_;
 
        # 判断目录内是否有index.m3u8文件 如果有则调用ffmpeg合并
        $CONFIG_PATH = "./index.m3u8"
        $TRUE_FALSE = (Test-Path $CONFIG_PATH)
        if ($TRUE_FALSE -eq "True") {
            ffmpeg.exe -allowed_extensions ALL -protocol_whitelist """file,crypto""" -i """index.m3u8""" -c copy """$_.mp4"""
        }

        # 返回上层目录
        Set-Location '../';

        # 如果未按下任何按键10秒后继续执行
        timeout /t 10
    }
}