【发布时间】:2014-04-07 16:31:54
【问题描述】:
我正在使用 Zeranoes FFmpeg Builds for Windows,我可以在不安装任何东西的情况下启动 ff-prompt。但是如何使用 Windows PowerShell 启动 ff-prompt.bat?我尝试了一些类似Invoke-Expression 或更改$env:Path 的方法,但似乎没有任何效果,因为我得到的只是消息
"C:\Users\Administrator>ECHO 关闭
找不到bin\ffmpeg.exe。”
是否可以使用 PowerShell 启动 ff-prompt?每个建议/解决方案都非常受欢迎。
我的目标是在这里找到一个像这样工作的解决方案: http://spreadys.wordpress.com/2012/12/03/ffprobe-and-windows-powershell/
但我想为我的所有剪辑自动执行此操作,这就是为什么我需要使用 powershell 启动 ffprobe。
ECHO OFF
REM FF Prompt 1.1
REM Open a command prompt to run ffmpeg/ffplay/ffprobe
REM Copyright (C) 2013 Kyle Schwarz
TITLE FF Prompt
IF NOT EXIST bin\ffmpeg.exe (
CLS
ECHO bin\ffmpeg.exe could not be found.
GOTO:error
)
CD bin || GOTO:error
PROMPT $G
CLS
ffmpeg -version
SET PATH=%CD%;%PATH%
ECHO.
ECHO For help run: ffmpeg -h
ECHO For formats run: ffmpeg -formats ^| more
ECHO For codecs run: ffmpeg -codecs ^| more
ECHO.
ECHO Current directory is now: "%CD%"
ECHO The bin directory has been added to PATH
ECHO.
CMD /F:ON /Q /K
GOTO:EOF
:error
ECHO.
ECHO Press any key to exit.
PAUSE >nul
GOTO:EOF
好的,这次我尝试了一些不同的东西:
$env:Path = ';C:\Users\Administrator\bin\'
$title = "A_Day_for_Cake_and_Accidents"
Start-Process ff-prompt.bat -ArgumentList "ffprobe -show_streams -select_streams v -print_format xml -count_frames C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.mov > C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\totalframes.xml"
这会创建一个名为“totalframes.xml”的文件,但没有所需的信息,我得到的唯一信息是:
C:\Users\Administrator>ECHO 关闭 ffmpeg 版本 N-60959-g669043d 使用 gcc 4.8.2 (GCC) 于 2014 年 2 月 27 日 22:01:58 构建 配置: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable -libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore- amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable- libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-zlib libavutil 52. 66.100 / 52. 66.100 libavcodec 55. 52.102 / 55. 52.102 libavformat 55. 33.100 / 55. 33.100 libav 设备 55. 10.100 / 55. 10.100 libavfilter 4. 2.100 / 4. 2.100 libswscale 2. 5.101 / 2. 5.101 libswresample 0. 18.100 / 0. 18.100 libpostproc 52. 3.100 / 52. 3.100 如需帮助,请运行:ffmpeg -h 对于格式运行:ffmpeg -formats |更多的 对于编解码器运行:ffmpeg -codecs |更多的 当前目录现在是:“C:\Users\Administrator\bin” bin 目录已添加到 PATH
所以基本上控制台会弹出,写入这个标准文本并且不使用我在 -Argument-List 中声明的命令。我不知道为什么它会忽略我的大部分命令,除了将所有内容写入 XML 文件。
【问题讨论】:
-
为什么需要用PowerShell启动批处理文件?
-
您应该能够像任何其他应用程序或脚本一样调用批处理文件。只需给出名称(如果不在
$Env:PATH中,请提供路径)。通常,您永远不需要将Invoke-Expression用于此类事情。错误消息表明批处理文件编写不佳,但无法从其他目录运行,而不是它自己的目录。 -
bat文件的内容是什么,你把
$ENV:path设置成什么? -
@alroc 因为我需要处理来自 ffprobe 的信息。我有超过 100 个剪辑需要用 ffprobe 读取,我认为使用 PowerShell 更容易做到这一点,所以如果我有一个可以自动启动 ffprobe 并为我提供所有剪辑的正确信息的功能,我会非常快乐。
-
我试过这个:
$env:Path =+ ";C:\Users\Administrator\ffmpeg\bin\ffmpeg.exe"并尝试Start-Process C:\Users\Administrator\ffmpeg\ff-prompt.bat,但这也不起作用。如果我只是从 PowerShell 开始做这件事,我会是一个快乐的人。
标签: windows powershell ffmpeg ffprobe