[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