首页 > 解决方案 > 将参数传递给 Powershells Call Operatore - 我无法让它工作

问题描述

出于某种原因,我什至无法让最简单的 Ffmpeg 案例工作:

$pathToFfmpeg = "PathToFfmpeg\ffmpeg.exe"
$video = "PathToVideoFile\video.mp4"
$param = "--i $video", "output.avi"
$execute = &$pathToFfmpeg $param

根据 Ffmpeg 网站,这应该会导致最基本的 Ffmpeg 用法:ffmpeg -i input.mp4 output.avi. 但是我收到的只是:

ffmpeg.exe : ffmpeg version git-2020-01-01-7b58702 Copyright (c) 2000-2020 the FFmpeg developers
At line:4 char:12
+ [string[]] $execute = &$pathToFfmpeg $param
+                          ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (ffmpeg version ...mpeg developers:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

  built with gcc 9.2.1 (GCC) 20191125
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass 
--enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb 
--enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame 
--enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma 
--enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex 
--enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec 
--enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 38.100 / 56. 38.100
  libavcodec     58. 65.100 / 58. 65.100
  libavformat    58. 35.101 / 58. 35.101
  libavdevice    58.  9.102 / 58.  9.102
  libavfilter     7. 70.101 /  7. 70.101
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Unrecognized option '-i PathToVideoFile\video.mp4'.
Error splitting the argument list: Option not found

所以看来我做错了什么。任何人都知道我如何让这个工作?我尝试了不同的方法来创建 params 数组并使用 EchoArgs.exe 检查,但无济于事。我没主意了。看起来 Ffmpeg 无法识别 Powershell 传递给它的内容。

标签: powershellffmpeg

解决方案


我相信它已经解决了。Ffmpeg 似乎有点挑剔它接收参数的方式和顺序。我想感谢@IvBaranov 和他在这里的回答,它给出了自己添加参数的每个部分的想法:

$param = @("--i", "$video", "output.avi")

这似乎有效。

还要感谢@Walter Mitty 再次尝试喷溅。


推荐阅读