2010-09-26 51 views
0

我在XBMC(xbmc.org)的Python插件中工作,我想從我的插件執行程序(ffmpeg.exe)而不顯示cmd窗口。 如果我使用os.system()來調用ffmpeg.exe工作正常,但xbmc會最小化,因爲os.system會在幾秒鐘內打開一個cmd窗口。 所以,我嘗試使用os.spawnv(),我認爲它可能允許我調用ffmpeg.exe沒有cmd窗口出現。 問題是我知道如何使用os.system,但我不知道如何使用os.spawnv。 我試着這一點,但不工作:Python:如何用很多參數使用os.spawnv?

os.spawnv(os.P_DETACH,'"C:\Program Files (x86)\XBMC\scripts\Base De Datos\ffmpeg.exe" -y -ss 30 -i "C:\Program Files (x86)\XBMC\scripts\Base De Datos\Movie.avi" -f mjpeg -vframes 1 -s 720x400 -an "C:\Program Files (x86)\XBMC\scripts\Base De Datos\thumbnail.jpg"') 

"C:\Program Files (x86)\XBMC\scripts\Base De Datos\ffmpeg.exe" = The path of the ffmpeg.exe 
-y -ss 30 -i = Arguments for ffmpeg.exe 
"C:\Program Files (x86)\XBMC\scripts\Base De Datos\Movie.avi" = The path of the movie I want to use with ffmpeg.exe to make a thumbnail (argument for ffmpeg.exe) 
-f mjpeg -vframes 1 -s 720x400 = More arguments for ffmpeg.exe 
"C:\Program Files (x86)\XBMC\scripts\Base De Datos\thumbnail.jpg" = The path for save the thumbnail. 

我嘗試了很多的方法,使一個縮略圖,但它似乎對我有非常複雜的XBMC插件,我不能使用pyffmpeg因爲我不能導入模塊從我的插件沒有安裝到德SO而且我的插件必須是便攜式的,我可以使用PIL,但只能製作圖片縮略圖,而且我需要製作視頻縮略圖。 我知道python中的一些模塊允許我調用進程沒有cmd窗口出現,但取決於其他模塊,如win32api,我不能導入出於同樣的原因我不能使用/導入pyffmpeg ...所以我試圖使用「壞道」使用這種方法,與os.system工程,但我鬆散控制我的插件窗口。 如果有人知道使用python製作視頻縮略圖的其他方式,請告訴我。 另一件事是我的插件必須是multiplataform(至少是Win和Linux),所以這種方式不夠好,但對我來說可能是一大步。

非常感謝。

+0

你使用的是什麼版本的python?對於最近的版本,鼓勵的方法是使用'subprocess'模塊。 – llasram 2010-09-27 18:02:27

回答

0

http://docs.python.org/library/os.html#os.spawnv,傳遞參數列表中:

os.spawnv(os.P_DETACH, "path\to\program.exe", ["arg1", "arg2", "arg3"]) 
+0

謝謝,但我嘗試: os.spawnv(os.P_DETACH,「C:\ Program Files(x86)\ XBMC \ scripts \ Base De Datos \ ffmpeg.exe」,[「-y」,「-ss」 ,「30」,「-i」,「C:\ Program Files(x86)\ XBMC \ scripts \ Base De Datos \ Movie.avi」,「-f」,「mjpeg」,「-vframes」 ,「-s」,「720x400」,「-an」,「C:\ Program Files(x86)\ XBMC \ scripts \ Base De Datos \ thumbnail.jpg」]) 並且不工作:錯誤:Python腳本onAction – GerarLM 2010-09-26 20:39:51

+0

什麼是行動?你會得到一個異常堆棧跟蹤?它是指向你使用spawnv的地方,還是別的地方? spawnv是否從獨立的Python腳本運行? – Ray 2010-09-26 21:57:59

+0

onAction是因爲使用spawnv的行會在我點擊插件的按鈕時執行。錯誤只在該行,其他任何內容。 – GerarLM 2010-09-26 22:38:25

0

這樣:

os.system(""C:\\Program Files (x86)\\XBMC\\scripts\\Base De Datos\\ffmpeg.exe" -y -ss 423 -i "C:\Program Files (x86)\XBMC\scripts\Base De Datos\Movie.avi" -f mjpeg -vframes 1 -s 720x320 -an "C:/Program Files (x86)/XBMC/scripts/Base De Datos/thumbnail.jpg"") 

工作正常,但最大限度地減少XBMC因爲彈出一個cmd窗口,所以我試着做同樣使用os.spawnv,但給我一個錯誤。