python - Python子进程调用VLC命令
问题描述
我有以下命令在 Windows CLI 中没有问题:
"G:\VLC\vlc" --dshow-vdev="Video (00 Pro Capture HDMI 4K+)" --dshow-size=1920x1080 -V dummy --intf=dummy --dummy-quiet --video-filter=scene --no-audio --scene-path="C:\<User>\My location" --scene-format=jpeg --scene-prefix=test_file --scene-replace --run-time=1 --scene-ratio=24 "dshow://" vlc://quit
这会对我的捕获卡显示的任何内容进行快照并将其保存到文件中。当我对 Python 进行同样的尝试时:
import os
import subprocess
path = "C:\\<User>\\My location"
fname = "test_file"
os.chdir('G:\\VLC')
process = subprocess.Popen(['vlc', ' --dshow-vdev="Video (00 Pro Capture HDMI 4K+)"', ' --dshow-size=1920x1080', ' -V dummy', ' --intf=dummy', \
' --dummy-quiet', ' --video-filter=scene', \
' --no-audio' ,path, ' --scene-format=jpeg', ' --scene-prefix=', fname, \
' --scene-replace', ' --run-time=1', ' --scene-ratio=24', ' "dshow://"', ' vlc://quit'])
我在 VLC 日志中得到以下内容,但未捕获屏幕截图:
filesystem error: cannot open file G:\VLC\ --dshow-vdev="Video (00 Pro Capture HDMI 4K+)" (Invalid argument)
dvdnav error: Could not open G:\VLC\ --dshow-vdev="Video (00 Pro Capture HDMI 4K+)" with libdvdcss.
dvdnav error: Can't open G:\VLC\ --dshow-vdev="Video (00 Pro Capture HDMI 4K+)" for reading
dvdnav error: vm: failed to open/read the DVD
谁能向我解释问题是什么?
解决方案
shlex
可以帮助你,用这种东西。
shlex 类可以很容易地为类似于 Unix shell 的简单语法编写词法分析器。这对于编写小型语言(例如,在 Python 应用程序的运行控制文件中)或解析带引号的字符串通常很有用。
import shlex
shlex.split(string)
建议类似于以下内容:
['G:\\VLC\\vlc', '--dshow-vdev=Video (00 Pro Capture HDMI 4K+)', '--dshow-size=1920x1080', '-V', 'dummy', '--intf=dummy', '--dummy-quiet', '--video-filter=scene', '--no-audio', '--scene-path=C:\\<User>\\My location', '--scene-format=jpeg', '--scene-prefix=test_file', '--scene-replace', '--run-time=1', '--scene-ratio=24', 'dshow://', 'vlc://quit']
推荐阅读
- pandas - 根据两个数据框中的条件从数据框中获取多行
- python - 切换 3D 绘图的 x 轴和 y 轴的位置
- c++ - 我需要 Shift 键的 ASCII 键码。我在互联网上找到的所有号码都不起作用
- google-street-view - 如何通过 URL 禁用街景中的自动连接(以编程方式)
- hadoop - Hadoop 容器失败,甚至 100% 完成
- sql - 计算另一个表的记录数的查询
- javascript - 背景地理位置 React/Ionic 的权限模型
- php - 如何在按钮单击 laravel 时在表格中递增
- javascript - 用于替换 URL 参数的 JavaScript 函数未按预期工作
- c# - Marshal.DestroyStructure 在.net 框架升级后不起作用