Пример #1
0
def copy_video(video, logfile):
    # Actualiza el estado del vídeo
    video.set_status('PRV')

    # Obtiene los nombres de ficheros origen y destino
    src = video.ficheroentrada_set.all()[0].fichero
    dst = os.path.join(config.get_option('VIDEO_LIBRARY_PATH'), utils.generate_safe_filename(video.titulo, video.informeproduccion.fecha_produccion.date(), os.path.splitext(src)[1]))
    video.fichero = dst
    video.save()

    # Copia el fichero.
    utils.ensure_dir(video.fichero)
    try:
        shutil.copy(src, dst)
        os.write(logfile, '%s -> %s\n' % (src, dst))
        os.chmod(dst, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
        os.write(logfile, 'chmod: 640\n')
    except IOError as error:
        os.write(logfile, error.__str__())
        video.set_status('DEF')
        return False

    # Obtiene la información técnica del vídeo copiado.
    generate_tecdata(video)

    # Actualiza el estado del vídeo
    if video.informeproduccion.aprobacion:
        video.set_status('COM')
    else:
        video.set_status('PTO')

    return True
Пример #2
0
def create_preview(video, logfile, pid_notifier = None):
    # Actualiza el estado del vídeo
    video.set_status('PRP')

    # Obtiene los nombres de ficheros origen y destino
    src = video.fichero
    dst = os.path.join(config.get_option('PREVIEWS_PATH'), utils.generate_safe_filename(video.titulo, video.informeproduccion.fecha_produccion.date(), ".flv"))

    # Crea el objecto previsualización
    pv = Previsualizacion(video = video, fichero = dst)
    pv.save()

    # Calcula las dimensiones de la previsualización.
    size = calculate_preview_size(video)

    # Codifica la previsualización.
    utils.ensure_dir(pv.fichero)
    if encode_preview(src, dst, size, logfile, pid_notifier) != 0:
        video.set_status('COM')
        try:
            os.unlink(dst)
        except:
            pass
        return False

    # Actualiza el estado del vídeo
    video.set_status('PTU')
    return True
Пример #3
0
def create_pil(video, logfile, pid_notifier=None):
    """
    """
    # Actualiza el estado del vídeo
    video.set_status('PRV')

    # Guarda la plantilla en un fichero temporal
    (handler, path) = tempfile.mkstemp(suffix='.mlt')
    os.write(handler, get_fdv_template(video).content)
    os.close(handler)

    # Genera el nombre del fichero de salida
    if video.fichero:
        utils.remove_file_path(video.fichero)
    video.fichero = os.path.join(
        config.get_option('VIDEO_LIBRARY_PATH'),
        utils.generate_safe_filename(
            video.titulo,
            video.informeproduccion.fecha_produccion.date(),
            ".mp4"
        )
    )
    video.save()
    utils.ensure_dir(video.fichero)

    # Montaje y codificación de la píldora
    if encode_mixed_video(path, video.fichero, logfile, pid_notifier) != 0:
        video.set_status('DEF')
        os.unlink(path)
        try:
            os.unlink(video.fichero)
        except:
            pass
        return False

    # Prepara el fichero para hacer HTTP streaming.
    make_streamable(video.fichero, logfile, pid_notifier)

    # Obtiene la información técnica del vídeo generado.
    generate_tecdata(video)

    # Borra el fichero temporal
    os.unlink(path)

    # Actualiza el estado del vídeo
    if video.informeproduccion.aprobacion:
        video.set_status('COM')
    else:
        video.set_status('PTO')

    return True
Пример #4
0
from configuracion import config
from postproduccion.utils import lock, ensure_dir

"""
Constantes con los caracteres que representan el tipo de mensaje.
"""
INFO = 'I'
WARNING = 'W'
ERROR = 'E'
DEBUG = 'D'

"""
Constante con el nombre de fichero del registro.
"""
LOGFILE = settings.MEDIA_ROOT + '/logs/application.log'
ensure_dir(LOGFILE)

"""
Escribe un mensaje en el log de la aplicación
"""
def _print_log(status, msg):
    _register_entry()
    f = open(LOGFILE, 'a')
    f.write("%c[%s] %s\n" % (status, datetime.datetime.now().strftime("%d/%m/%Y %H:%M:%S.%f"), msg))
    f.close()

#
# Registro de procesos.
#

"""