[pyar] Problemas para detener script con ffmpeg
hipersayan x
hipersayan.x en gmail.com
Mie Oct 6 13:18:49 ART 2010
Estoy armando un script para convertir varios videos con ffmepeg, en 1
y 2 pasadas, las lineas serían mas o menos así:
import subprocess
# Esta linea es para convertir un video en 1 pasada.
cmd_pass_0 = ['ffmpeg', '-i', video_in, '-y', '-vcodec', video_codec,
'-acodec', audio_codec, '-b', str(video_bitrate), '-ab',
str(audio_bitrate), video_out_tmp]
# Estas lineas son para convertir un video en 2 pasadas.
cmd_pass_1 = ['ffmpeg', '-i', video_in, '-y', '-pass', '1',
'-passlogfile', 'ffmpeg2pass', '-vcodec', video_codec, '-b',
str(video_bitrate), '-an', '-f', video_type, dev_null]
cmd_pass_2 = ['ffmpeg', '-i', video_in, '-y', '-pass', '2',
'-passlogfile', 'ffmpeg2pass', '-vcodec', video_codec, '-acodec',
audio_codec, '-b', str(video_bitrate), '-ab', str(audio_bitrate),
video_out_tmp]
# Acá convierto el video en 2 pasadas.
if n_pass == 2:
cmd_out = subprocess.Popen(cmd_pass_1)
# Espero a que finalice el comando
cmd_out.wait()
# Si ocurre algún problema retorno con código de error,
# y limpio los archivos temporales.
if cmd_out.returncode != 0:
clean_tmp_files()
return cmd_out.returncode
cmd_out = subprocess.Popen(cmd_pass_2)
# Acá convierto el video en 1 pasada.
else:
cmd_out = subprocess.Popen(cmd_pass_0)
# Espero a que finalice el comando
cmd_out.wait()
# Si ocurre algún problema retorno con código de error,
# y limpio los archivos temporales.
if cmd_out.returncode != 0:
clean_tmp_files()
try:
os.remove(video_out_tmp)
except:
pass
return cmd_out.returncode
Ahora bien, si yo detengo ffmpeg usando la tecla q, ffmpeg sale con
código 0, o sea cmd_out.returncode == 0, y por lo tanto pasa de largo,
no lo toma ni en la primera ni en la segunda pasada.
Y lo que yo quiero es que al salir de ffmpeg también finalice mi script.
¿Habrá algún hack que le pueda hacer para detener el script cuando
finaliza ffmpeg?
More information about the pyar
mailing list