Я пытаюсь написать графический интерфейс для FFMPEG
. Я использую подпроцесс pythons для создания процесса ffmpeg для каждого преобразования, которое я хочу. Это прекрасно работает, но я также хотел бы получить способ получить прогресс преобразования, независимо от того, провалился он или нет и т. Д. Я подумал, что мог бы сделать это, получив доступ к stdout процесса следующим образом:
Звонок subprocess.Popen()
# Convert - Calls FFMPEG with current settings. (in a seperate
# thread.)
def convert(self):
# Check if options are valid
if self.input == "" or self.output == "":
return False
# Make the command string
ffmpegString = self.makeString()
# Try to open with these settings
try:
self.ffmpeg = subprocess.Popen(ffmpegString, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
except OSError:
self.error.append("OSError: ")
except ValueError:
self.error.append("ValueError: Couldn't call FFMPEG with these parameters")
# Convert process should be running now.
и чтение stdout
:
convert = Convert()
convert.input = "test.ogv"
convert.output = "test.mp4"
convert.output_size = (0, 0)
convert.convert()
while 1:
print convert.ffmpeg.stdout.readline()
Это работает, но статус ffmpeg не отображается. Я предполагаю, что это как-то связано с тем, как ffmpeg обновляет его. Есть ли способ получить к нему доступ?