2016-12-31 3 views
0

こんにちは私はそれを実行するためのスクリプトを取得することはできませんHTTP上でライブ私の画面をスチームすることですが、私は修正することはできませんエラーが発生します。Pythonのサブプロセスエラーそのようなファイルやディレクトリがありません

#!/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") 

エラーがPopenためのコマンド引数は、文字列の順序でなければなりません

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 
+1

ので誤差は何ですか? – 101

答えて

2

です。コマンドの名前が含まれている最初の文字列はスペースを含めることはできませ必要があることを

import subprocess 
subprocess.Popen(["ffmpeg", "-f", "x11grab", 
        "-framerate", "60", "-video_size", 
        "1366x768", "-i", ":0.0", "out.mpg"]) 

注: これを試してみてください! "ffmpeg"の代わりに "ffmpeg"(最後のスペースに注意してください)を使用すると、 "ffmpeg"という名前のコマンドが存在しないので、 "no such file or directory"というエラーで再び失敗します!

またshlexを使用することができます。

import subprocess 
import shlex 

cmd = "ffmpeg -f x11grab -framerate 60 -video_size 1366x768 -i :0.0 out.mpg" 
subprocess.Popen(shlex.split(cmd)) 
+0

幻想的な答え、私はとても盲目でした。 –

+0

@Krazor私たちはすべてこのミスを犯しました。 :-) –

+0

うん。間違った直観的でない標準ライブラリにそれを責めましょう。うん。 +1 –

関連する問題