有没有MOV批量转MP4格式的工具。批量!
win用。
有没有MOV批量转MP4格式的工具。批量!
win用。
HandBrake 应该能行:
以前让AI写过ffmpeg的Powershell模板,拿去改改输出参数就行了。
禁忌事项:
global_quality:vparam(
[Parameter(Mandatory=$true)]
[string]$InputDir,
[Parameter(Mandatory=$true)]
[string]$OutputDir,
[Parameter(Mandatory=$false)]
[string]$FFmpegPath = "D:\Program\ffmpeg\bin\ffmpeg.exe"
)
# ===============================
# 基础检查
# ===============================
if (!(Test-Path $InputDir)) {
Write-Error "输入目录不存在: $InputDir"
exit 1
}
if (!(Test-Path $OutputDir)) {
Write-Host "输出目录不存在,正在创建: $OutputDir"
New-Item -ItemType Directory -Path $OutputDir | Out-Null
}
# 检查 FFmpeg 路径
if (-not $FFmpegPath) {
$FFmpegPath = Read-Host "请输入 ffmpeg 二进制文件的路径 (例如:C:\Program Files\ffmpeg\bin\ffmpeg.exe)"
}
# 去掉路径两侧的引号
$FFmpegPath = $FFmpegPath.Trim('"')
# 检查 ffmpeg 是否存在
if (!(Test-Path $FFmpegPath)) {
Write-Error "指定的 FFmpeg 路径不存在: $FFmpegPath"
exit 1
}
# 日志文件
$logFile = Join-Path $OutputDir ("ffmpeg_log_" + (Get-Date -Format "yyyyMMdd_HHmmss") + ".txt")
function Write-Log {
param([string]$Message)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$line = "[$timestamp] $Message"
Write-Host $line
Add-Content -Path $logFile -Value $line
}
Write-Log "========== 开始批量转码 =========="
Write-Log "输入目录: $InputDir"
Write-Log "输出目录: $OutputDir"
Write-Log "FFmpeg 路径: $FFmpegPath"
# 支持扩展名
$extensions = ".mp4",".mkv",".avi",".mov",".flv",".wmv"
$success = 0
$failed = 0
$skipped = 0
# ===============================
# 开始递归遍历
# ===============================
Get-ChildItem -Path $InputDir -Recurse -File |
Where-Object { $extensions -contains $_.Extension.ToLower() } |
ForEach-Object {
$inputFile = $_.FullName
# 计算相对路径
$relativePath = $inputFile.Substring($InputDir.Length).TrimStart("\","/")
$relativeDir = Split-Path $relativePath -Parent
# 输出目录保持结构
$targetDir = Join-Path $OutputDir $relativeDir
if (!(Test-Path $targetDir)) {
New-Item -ItemType Directory -Path $targetDir -Force | Out-Null
}
# 拼接输出文件名
$outputFileName = $_.BaseName + $_.Extension
$outputFile = Join-Path $targetDir $outputFileName
# 已存在则跳过
if (Test-Path $outputFile) {
Write-Log "跳过(已存在): $outputFile"
$skipped++
return
}
Write-Log "开始处理:"
Write-Log "输入: $inputFile"
Write-Log "输出: $outputFile"
# ====== 关键安全调用方式 ======
$ffmpegArgs = @(
"-y"
"-i", $inputFile
"-c:v", "libx264"
"-preset", "medium"
"-crf", "23"
"-c:a", "opus"
"-b:a", "192k"
$outputFile
)
# 使用 & 调用,路径带引号处理
& $FFmpegPath @ffmpegArgs 2>&1 | ForEach-Object {
Add-Content -Path $logFile -Value $_
}
if ($LASTEXITCODE -ne 0) {
Write-Log "处理失败: $inputFile"
$failed++
}
else {
Write-Log "完成: $outputFile"
$success++
}
Write-Log "----------------------------------------"
}
# ===============================
# 统计信息
# ===============================
Write-Log "========== 全部完成 =========="
Write-Log "成功: $success"
Write-Log "失败: $failed"
Write-Log "跳过: $skipped"
Write-Log "日志文件: $logFile"
ffmpeg,或者各种ffmpeg的套皮,视频处理基本都绕不开这个东西
楼上两个,一个是ffmpeg的套皮,另一个是ffmpeg的脚本。
ffmpeg 最简单了吧。
FFmpeg 从功能上讲最为强大,而且现在有 AI 辅助,写一个批量转换的脚本也不是难事。
即使放在过去没有 AI 的时候,其实也有很多通俗易懂的教程,照着这些教程也能完成基本操作:
但个人很多时候不是很愿意直接推荐 FFmpeg,因为我不知道提问者是否有操作命令行、脚本的能力。甚至可能很多人连怎么安装 FFmpeg 都不知道。如果不具备这些基础知识,那么即使有 AI 帮忙写脚本也很难进行下去,莫不如直接推荐个好用的 GUI,好歹操作上更直观。
FFmpeg就挺好的,我之前整理历年积累拍的照片/视频时,嫌视频大,就写了个小工具调用FFmpeg批量转到AV1编码的mp4,把整个文件夹或多个视频文件拖到exe图标上即可(实际就是用这个exe打开这些文件),可自定义转码参数(内置了几条CPU/A卡加速的转码参数,N卡要自己填参数,拿参考示例去找AI问问即可)
下载 ffmpeg-git-full.7z 解压出 FFmpeg.exe 放一起就行
都是FFmpeg的壳,我也分享个python脚本,最近刚找ai搓的
行数太大了发不出来,下面是我的小网盘
访问密码是:1234
系统安装了python的下载 FFmpeg简易转换合并.pyw 运行
预设文件 ffmpeg_presets 下不下都无所谓,只是演示一些参数怎么填
不想安装python可以下载我找github自动编译好的FFmpeg简易转换合并.exe
FFmpeg我也去官网下载了最新的share版本上传到网盘了,下载后解压到脚本/程序同目录
或者配置到环境变量里(新手忽略这句话)
share版本的ffmpeg ffplay ffprobe公用运行库,所以体积小点,就是文件比较零碎,单文件的每个都单独包含了运行库,加起来会很大,这个脚本我用了FF全家桶,所以share版划算点
因为是找ai搓的,我自己也只刚测试了半个月,有啥问题我也不知道,不过对于mov批量转mp4还是能对付的
打开脚本/程序后, 点击上半那些选项配置好参数模版,把你要批量转换的文件拖进去,就会按模版创建到下面的列表
下面列表表头上显示数量的框,前面是总数量,如果选的cpu软编码,你可以按你cpu性能选数量,最好不超过3,
后面是显示硬件编码的数量,如果你选的硬件编码,如果超过2个,文件可能会在显卡内存里打架,所以不要超过2
列表选择文件双击还可以微调
2个大按钮是单个文件转换按钮,必须在上面选择输入文件
下面队列的按钮是管队列的
第一页的功能感觉解决了HandBrake90%
像素格式记得点击取消一下,我默认的是有损的,因为我转换需求是为了传手机看
第二页的功能类似mkvtoolnix,不过这个只模仿了30%,对于轨道的默认 语言 那些没有处理,就是简单的多流合并,可以无损复制,也可以转换一下编码,
这个功能主要是为了解决一下网站视频下载下来是音频视频分开2个文件的合并问题,所以没深入挖掘功能
画中画功能的初衷是舞台多机位合并, 画中画的主从视频必须选编码格式重新编码,而不能用copy无损复制了
可以在主视频的预览里看到从视频的位置演示框, 主视频偏移功能是为了全舞台给竖舞台让点位置,比如-100就向左边让100,点了偏移功能后必须获取一下主视频的大小,
主视频的偏移在预览里看不到,编码后是能体现的
这一页也支持拖拽,多个文件,点击选择一个作为主视频流,或者选all,全部作为从音频流,画中画的视频是用画中画按钮添加