你好,我无法让我的脚本运行,它的目的是通过 HTTP 实时显示我的屏幕,但它出现了一个我似乎无法修复的错误。
#!/bin/python
import subprocess
import threading
try:
subprocess.Popen("rm out.mpg")
except OSError:
pass
subprocess.Popen("ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg")
subprocess.Popen("python -m SimpleHTTPServer 8000 out.mpg")
Run Code Online (Sandbox Code Playgroud)
错误是
Traceback (most recent call last):
File "Streaming.py", line 11, in <module>
subprocess.Popen("ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg")
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)
命令参数Popen应该是字符串序列。尝试这个:
import subprocess
subprocess.Popen(["ffmpeg", "-f", "x11grab",
"-framerate", "60", "-video_size",
"1366x768", "-i", ":0.0", "out.mpg"])
Run Code Online (Sandbox Code Playgroud)
请注意,包含命令名称的第一个字符串不应包含任何空格!如果您使用“ffmpeg”(注意末尾的空格)而不是“ffmpeg”,它将再次失败并显示“没有这样的文件或目录”错误,因为没有名为“ffmpeg”的命令!
您还可以使用shlex:
import subprocess
import shlex
cmd = "ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg"
subprocess.Popen(shlex.split(cmd))
Run Code Online (Sandbox Code Playgroud)