gpt4 book ai didi

powershell - 使用 2 遍编码设置 FFmpeg 进程优先级

转载 作者:行者123 更新时间:2023-12-04 23:12:43 24 4
gpt4 key购买 nike

我正在使用 FFmpeg使用 PowerShell。

我正在尝试在使用 FFmpeg 的 2 Pass 时设置进程优先级编码。

该脚本适用于 1 Pass 和 CRF 编码。

脚本

当 Pass 1 完成时,它会再次为 Pass 2 启动 FFmpeg。

注意:Pass 1 输出到 NUL,Pass 2 输出视频文件。

(Start-Process ffmpeg -NoNewWindow -Wait -ArgumentList '-i "C:\Path\video.mpg" -c:v libx264 -b:v 2000K -pass 1 NUL' -PassThru).PriorityClass = [System.Diagnostics.ProcessPriorityClass]::AboveNormal; 

(Start-Process ffmpeg -NoNewWindow -Wait -ArgumentList '-i "C:\Path\video.mpg" -c:v libx264 -b:v 2000K -pass 2 "C:\Path\video.mp4"' -PassThru).PriorityClass = [System.Diagnostics.ProcessPriorityClass]::AboveNormal

问题

使用 -Wait导致此 PowerShell 错误:
Exception setting "PriorityClass": "Cannot process request because the process (14324) has exited."

但没有 -Wait第二遍永远不会开始,我得到这个 FFmpeg 错误:
Failed to initialize encoder: Invalid parameter
Additional information: rc_twopass_stats_in.buf not set.

最佳答案

你要找的是Wait-Process .

您将需要丢失 -wait因为该命令在运行脚本的下一部分之前等待进程退出

($Process = Start-Process ffmpeg -NoNewWindow -ArgumentList '-i "C:\Path\video.mpg" -c:v libx264 -b:v 2000K -pass 1 NUL' -PassThru).PriorityClass = [System.Diagnostics.ProcessPriorityClass]::AboveNormal; 
Wait-Process -Id $Process.id
($Process = Start-Process ffmpeg -NoNewWindow -ArgumentList '-i "C:\Path\video.mpg" -c:v libx264 -b:v 2000K -pass 2 "C:\Path\video.mp4"' -PassThru).PriorityClass = [System.Diagnostics.ProcessPriorityClass]::AboveNormal
Wait-Process -Id $Process.id

您可以使用 $Process.HasExited 验证进程是否已退出。
($Process = Start-Process ffmpeg -NoNewWindow -Wait -ArgumentList '-i "C:\Path\video.mpg" -c:v libx264 -b:v 2000K -pass 1 NUL' -PassThru).PriorityClass = [System.Diagnostics.ProcessPriorityClass]::AboveNormal; 
Wait-Process -Id $Process.id
$Process.HasExited
($Process = Start-Process ffmpeg -NoNewWindow -Wait -ArgumentList '-i "C:\Path\video.mpg" -c:v libx264 -b:v 2000K -pass 2 "C:\Path\video.mp4"' -PassThru).PriorityClass = [System.Diagnostics.ProcessPriorityClass]::AboveNormal
Wait-Process -Id $Process.id
$Process.HasExited

关于powershell - 使用 2 遍编码设置 FFmpeg 进程优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62059522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com