powershell - 将参数传递给 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 传递给它的内容。
解决方案
我相信它已经解决了。Ffmpeg 似乎有点挑剔它接收参数的方式和顺序。我想感谢@IvBaranov 和他在这里的回答,它给出了自己添加参数的每个部分的想法:
$param = @("--i", "$video", "output.avi")
这似乎有效。
还要感谢@Walter Mitty 再次尝试喷溅。
推荐阅读
- angular - ECMA Script、Angular 和 Type Script 之间有什么关系?
- sql - 许多连接表的逐行比较
- postgresql - 如何使用 java-jdbc 程序运行分析查询?
- flutter - Flutter ListView 难以滚动,因为手势儿童的 onTap 属性
- asp.net - Firestore 云到 asp.net mvc
- python-3.x - 在 python 中修改字典时出现意外行为
- angular - “添加几个页面”到现有的 Angular 应用程序,外观完全不同(不同的样式,没有页眉/页脚等)
- google-api - 使用 API 获取组织的共享设置
- android - Capture layout screen in Android
- jquery - How to execute some piece of jquery code only when the viewport is above 1000px in WordPress