Python: Как использовать os.spawnv с большим количеством аргументов? - PullRequest
0 голосов
/ 26 сентября 2010

Я работаю в плагине Python для XBMC (xbmc.org), и я хочу выполнить программу (ffmpeg.exe) из моего плагина без появления окна cmd.Если я использую os.system () для вызова ffmpeg.exe, он работает нормально, но xbmc минимизируется, потому что os.system открывает окно cmd за несколько секунд.Итак, я пытаюсь использовать os.spawnv (), который я считаю возможным, что позволяет мне вызвать ffmpeg.exe без появления окна cmd.Проблема в том, что я знаю, как использовать os.system, но я не знаю, как использовать 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, пожалуйста, сообщите мне.Другое дело, что мой плагин должен быть мультиплатформенным (по крайней мере, Win и Linux), так что этот путь не очень хорош, но это может быть большим шагом для меня.

Спасибо большое.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2010

Таким образом:

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, но выдает ошибку.

0 голосов
/ 27 сентября 2010

Согласно http://docs.python.org/library/os.html#os.spawnv, передать аргументы в списке:

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