您好我无法让我的脚本运行它是为了通过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")
错误是
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
答案 0 :(得分:4)
Popen
的命令参数应该是一系列字符串。
试试这个:
import subprocess
subprocess.Popen(["ffmpeg", "-f", "x11grab",
"-framerate", "60", "-video_size",
"1366x768", "-i", ":0.0", "out.mpg"])
请注意,包含命令名称的第一个字符串 not 应包含任何空格!如果你愿意使用&#34; ffmpeg&#34; (注意末尾的空格)而不是&#34; ffmpeg&#34;如果没有这样的文件或目录,它将再次失败&#34;错误,因为没有名称为&#34; ffmpeg&#34;!
的命令您也可以使用shlex
:
import subprocess
import shlex
cmd = "ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg"
subprocess.Popen(shlex.split(cmd))