首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell和FFMPEG - FFMPEG未执行

Powershell和FFMPEG - FFMPEG未执行
EN

Stack Overflow用户
提问于 2016-08-04 21:12:25
回答 2查看 2K关注 0票数 0

因此,我编写了一个powershell脚本,它递归地搜索超过一定大小的所有视频文件,然后调整大小。

我觉得我缺少了一些明显的here...because --我的脚本实际上并不运行FFMPEG,它只是在屏幕上显示运行它的命令。我相信我会找到解决办法的。

代码语言:javascript
复制
$SearchPath = "N:\baseball"

$oldVideos = Get-ChildItem -Include @("*.mkv", "*.mov", "*.mpg", "*.wmv", "*.avi") -Path $SearchPath -Recurse | where-object {$_.length -gt 500MB};

Set-Location -Path 'C:\Program Files\ffmpeg\bin';

foreach ($OldVideo in $oldVideos) 
{
    $outputfolder = "O:\resized"
    $oldname = Get-Item $oldvideo | Select-Object -ExpandProperty BaseName
    $suffix = "_resized.mp4"
    $newname = "$($oldname)_$($suffix)"
    $ffmpeg = ".'C:\Program Files\ffmpeg\bin\ffmpeg.exe'"
    $arguments = " -i `"$($OldVideo)`" -vf scale=720:trunc(ow/a/2)*2 -c:v libx264 -f mp4 `"$outputfolder\$newname`" -y"
    $ffmpeg + $arguments}

下面是我运行脚本时屏幕的实际输出。‘C:\Program Files\ffmpeg\bin\ffmpeg.exe’-i“N:\棒球\点击\067.mov”-vf scale=720:trunc(ow/a/2)*2 -c:v libx264 -f mp4 "O:\resized\067__resized.mp4“-y

该命令应该执行(它在命令窗口中运行)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-05 12:27:00

我终于开始工作了.我看了几个其他的脚本,以及它们是如何成为executing...seems的,就像我把它弄得太复杂了。编辑:我添加了日志记录和附加功能,以删除原始文件并将其移动到原始位置。我可能应该添加一些错误处理来检查电影长度是否是identical...gotta首先显示出来的。注意:日志记录并不完全适用于脚本的核心部分right...but (查找500‘t以上的电影,调整大小,移回原始文件夹并删除作品)。我还需要添加2个检查到电影文件。1查看调整后的电影是否实际上更小,以及电影的持续时间是否相同。

代码语言:javascript
复制
 $env:Path += ";C:\Program Files\ffmpeg\bin\"

function Write-Log 
    { 
        param
        (
            [string]$strMessage
        )

            $LogDir = 'L:\conlogs\'
            $Logfile = "\Conversion-Log.txt"
            $Path = $logdir + $logfile
            [string]$strDate = get-date
            add-content -path $Path -value ($strDate + "`t:`t"+ $strMessage)
}

$SearchPath = "N:\baseball"

$oldVideos = Get-ChildItem -Include @("*.mkv", "*.mov", "*.mpg", "*.wmv", "*.avi","*.mp4") -Path $SearchPath -Recurse | where-object {$_.length -gt 500MB} | where-object {$_.Name -NotMatch "resized"};

foreach ($OldVideo in $oldVideos) 
{   $outputfolder = "O:\resized"
    $oldname = Get-Item $oldvideo | Select-Object -ExpandProperty BaseName
    $suffix = "resized.mp4"
    $newname = "$($oldname)_$($suffix)"
    ffmpeg.exe -i $oldvideo.FullName -vf "scale=720:trunc(ow/a/2)*2" -c:v libx264 -f mp4 -y "$outputfolder\$newname"

    $OriginalSize = (Get-Item $OldVideo).length 
    $ConvertedSize = (Get-Item $outputfolder\$Newname).length 

    If($ConvertedSize -le $OriginalSize)
    {
        Write-Log "$($NewVideo) has been successfully resized"
        Remove-Item $OldVideo

        If (Test-Path $OldVideo)
        {
            write-log "Unable to remove $($OldVideo)"
        }

        Else
        {
            write-log "Successfully removed $($OldVideo)"
        }
        Elseif
        {
            write-log "You dun goofed!"
        }

        $oldvidpath = [System.IO.Path]::GetDirectoryName($oldvideo)
        Move-Item "$outputfolder\$Newname" -Destination $oldvidpath

       If (Test-Path "$oldvidpath\$newname")
        {
            write-log "Unable to move $($newname)"
        }

        Else
        {
            write-log "Successfully moved $($OldVideo)"
        }

        Elseif
        {
            write-log "You dun goofed!"
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-08-04 21:30:02

现在,您只需要组合两个字符串,所以它输出合并的字符串。它正按照你的要求去做。尝试将其更改为:

代码语言:javascript
复制
$SearchPath = "N:\baseball"

$oldVideos = Get-ChildItem -Include @("*.mkv", "*.mov", "*.mpg", "*.wmv", "*.avi") -Path $SearchPath -Recurse | where-object {$_.length -gt 500MB};

Set-Location -Path 'C:\Program Files\ffmpeg\bin';

foreach ($OldVideo in $oldVideos) 
{
    $outputfolder = "O:\resized"
    $oldname = Get-Item $oldvideo | Select-Object -ExpandProperty BaseName
    $suffix = "_resized.mp4"
    $newname = "$($oldname)_$($suffix)"
    $ffmpeg = "'C:\Program Files\ffmpeg\bin\ffmpeg.exe'"
    $arguments = " -i `"$($OldVideo)`" -vf scale=720:trunc(ow/a/2)*2 -c:v libx264 -f mp4 `"$outputfolder\$newname`" -y"
    & $ffmpeg $arguments}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38777489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档