power shell ffmpeg视频截图九宫格缩图预览
$files = Get-ChildItem *.mp4,*.mkvforeach ($file in $files) {
# 定义函数以获取视频时长
function Get-VideoDuration($file) {
$ffmpegOutput = & ffmpeg -i $file 2>&1
$durationMatch = ::Match($ffmpegOutput, 'Duration: (\d+:\d+:\d+\.\d+)')
if ($durationMatch.Success) {
$duration = $durationMatch.Groups.Value
$timeComponents = $duration -split ':'
$durationInSeconds = $timeComponents * 3600 + $timeComponents * 60 + ::Round($timeComponents)
return $durationInSeconds
}
return 0
}
#文件
$fileRootPath = $file.Name
#$fileRootPath = Read-Host "名称带文件类型"
#$fileRootPath = ""
$time = Get-VideoDuration $fileRootPath
#Write-Host "视频时长:$time 秒"
# 获取视频时长
$durationInSeconds = Get-VideoDuration $fileRootPath
# 计算截取的时间点,从第10秒开始,平均分成9帧
$frameTimes = @()
for ($i = 0; $i -lt 9; $i++) {
$frameTimes += ::Round(10 + $durationInSeconds / 9 * $i)
}
# 定义文件路径和参数
$outputPath = "img"
New-Item -Path ./$outputPath -ItemType Directory -Force
# 生成创建图像的命令 -n 是跳过 -y是覆盖
for ($i = 0; $i -lt 9; $i++) {
$command = "ffmpeg -ss " + $frameTimes[$i] + " -i `"$fileRootPath`" -vframes 1 -q:v 2 " + $outputPath + "\frame_$i.jpg"
Invoke-Expression $command
Write-Host "已截取图像 $i"
}
# 合并截取的图像成图像网格
# 获取文件大小
$fileInfo = Get-Item $file.Name
$fileSizeBytes = $fileInfo.Length
$fileSizeGB = ::Round($fileSizeBytes / 1GB, 2)# 转换为千兆字节
# 转换时间
$hours = ::floor($time / 3600)# 计算小时
$minutes = ::floor(($time % 3600) / 60)# 计算分钟
$seconds = $time % 60# 计算剩余的秒数
$名称 =$file.Name -replace ".mp4|.mkv", ""
# 水印图像文件路径
$watermarkImage = "D:/Software/O.png"
#$watermarkImage = "E:/O.png"
# 合并图像和水印
$font = "D:/Software/ios.ttf"
#$font = "E:/ios.ttf"
$text = "名 称:$名称`n视频时长:$hours 小时 $minutes 分钟 $seconds 秒`n大 小:$fileSizeGB.GB"
$标题 = "$名称"
$视频时长 = "视频时长:$hours 小时 $minutes 分钟 $seconds 秒"
$大小 = "大小:$fileSizeGB.GB"
$outputFileName = "$fileRootPath.jpg"
$mergeCommand = "ffmpeg -y -i `"$outputPath\frame_%d.jpg`" -i $watermarkImage -filter_complex `"
scale=-1:468,drawbox=x=0:y=0:w=iw:h=ih:c=white:t=10,tile=3x3,
pad=iw:ih+155:0:155:white,drawtext=text='$text':fontfile='$font':fontsize=35:fontcolor=black:x=600:y=30;
overlay=10:10`" `"$outputFileName`""
Invoke-Expression $mergeCommand
Remove-Item -Path .\$outputPath -Recurse #删除图片
Write-Host "图像网格创建完成。"
}
鸡肋 感谢分享~ 感谢分享,顶一下 谢谢谢谢 楼主 我想要你预览的那个视频可以吗? {:1_918:} 太厉害了。。 居然是,柯南耶,画质不错哦 感谢分享,顶一下 感谢分享,有成品吗,类似exe的最好 好家伙。视频网站预览图,的小编,一下自动化了。
页:
[1]
2