【发布时间】:2014-04-10 13:24:57
【问题描述】:
好吧,伙计们,看来我还有一个问题要问,这与我的上一个问题有关,可以在这里找到:How to start ffprobe with Windows PowerShell。在那里,我问如何使用 Windows PowerShell 启动 ffprobe,在尝试了一些东西之后,我得到了它,好吧,可以说,在它再次关闭之前启动了一秒钟。 我在 PowerShell 中使用以下命令进行了尝试:
$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"
结果,奇怪的是,xml 文件只有来自ff-prompt.bat 的标准文本,如下所示:
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
我的第一个想法是,它根本不工作,但后来我想知道为什么我得到一个 XML 文件,而它根本不工作。 PowerShell 执行ff-prompt.bat 可能一秒钟,然后PowerShell 再次关闭ff-prompt.bat 而不执行我的一半命令。有人知道为什么 ff-prompt 在执行我的所有命令之前就关闭了吗?
编辑:所以我尝试的是应该直接执行它的东西,但实际上我得到了一大堆错误:
$title = "A_Day_for_Cake_and_Accidents"
$Cmd = ‘C:\Users\Administrator\ffmpeg\bin\ffprobe.exe’
$Arg1 = ’ffprobe '
$Arg2 = ‘-show_streams ’
$Arg3 = ‘-select_streams v '
$Arg4 = ‘-print_format xml '
$Arg5 = ‘-count_frames '
$Arg6 = "C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\$title.mov >"
$Arg7 = " C:\Users\Administrator\Desktop\dcp_bearbeitet\$title\totalframes.xml"
& $Cmd $Arg1 $Arg2 $Arg3 $Arg4 $Arg5 $Arg6 $Arg7
我收到的错误消息:
"ffprobe.exe 无法为选项“show_streams”设置值“-select_streams v”:找不到选项”
我现在面临的问题是-show_streams没有得到值,所以可能这就是他使用next参数作为值的原因,有什么办法吗?
【问题讨论】:
-
你为什么要使用 bat 文件?您会发现直接从 powershell 调用 ffprobe 要容易得多。而且指定 .exe 的完整路径也比动态修改 PATH 更容易。
-
@arco444 这听起来很简单,但我该怎么做呢?我必须安装一些软件还是需要其他命令?问题是我有一堆电影,我必须从 XML 文件中提取总帧数,我认为如果我可以不费力气地自动执行此操作会更容易,这就是我使用此参数
$title的原因我所有的视频。 -
这里关于启动外部命令需要了解的一切:edgylogic.com/blog/powershell-and-external-commands-done-right
-
@andyb 感谢您提供此链接,我会阅读它,如果有帮助,我会回复您。
-
@sebastian - 我已经发布了你的第一个 ff-prompt.bat 问题的答案。
标签: windows powershell ffmpeg ffprobe