es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo ejecutar este comando utilizando ffmpeg-python?

ffmpeg -i brooklynsfinest_clip_1080p.mp4 \
-filter_complex \
“[0:v]split=3[v1][v2][v3]; \
[v1]copy[v1out]; [v2]scale=w=1280:h=720[v2out]; [v3]scale=w=640:h=360[v3out]” \
-map [v1out] -c:v:0 libx264 -x264-params “nal-hrd=cbr:force-cfr=1” -b:v:0 5M -maxrate:v:0 5M -minrate:v:0 5M -bufsize:v:0 10M -preset slow -g 48 -sc_threshold 0 -keyint_min 48 \
-map [v2out] -c:v:1 libx264 -x264-params “nal-hrd=cbr:force-cfr=1” -b:v:1 3M -maxrate:v:1 3M -minrate:v:1 3M -bufsize:v:1 3M -preset slow -g 48 -sc_threshold 0 -keyint_min 48 \
-map [v3out] -c:v:2 libx264 -x264-params “nal-hrd=cbr:force-cfr=1” -b:v:2 1M -maxrate:v:2 1M -minrate:v:2 1M -bufsize:v:2 1M -preset slow -g 48 -sc_threshold 0 -keyint_min 48 \
-map a:0 -c:a:0 aac -b:a:0 96k -ac 2 \
-map a:0 -c:a:1 aac -b:a:1 96k -ac 2 \
-map a:0 -c:a:2 aac -b:a:2 48k -ac 2 \
-f hls \
-hls_time 2 \
-hls_playlist_type vod \
-hls_flags independent_segments \
-hls_segment_type mpegts \
-hls_segment_filename stream_%v/data%02d.ts \
-master_pl_name master.m3u8 \
-var_stream_map “v:0,a:0 v:1,a:1 v:2,a:2” stream_%v.m3u8

¿Cómo puedo convertir este comando en código de ffmpeg-python?
No sé cómo hacerlo 😥

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para convertir el comando ffmpeg dado a código ffmpeg-python, podemos usar el siguiente código:

    import ffmpeg
    
    (stream
        .input('brooklynsfinest_clip_1080p.mp4')
        .filter_complex(
            '[0:v]split=3[v1][v2][v3]; '
            '[v1]copy[v1out]; [v2]scale=w=1280:h=720[v2out]; [v3]scale=w=640:h=360[v3out]'
        )
        .output(
            '[v1out]', '-c:v:0', 'libx264', '-x264-params', 'nal-hrd=cbr:force-cfr=1', '-b:v:0', '5M', '-maxrate:v:0', '5M', '-minrate:v:0', '5M', '-bufsize:v:0', '10M', '-preset', 'slow', '-g', '48', '-sc_threshold', '0', '-keyint_min', '48',
            '[v2out]', '-c:v:1', 'libx264', '-x264-params', 'nal-hrd=cbr:force-cfr=1', '-b:v:1', '3M', '-maxrate:v:1', '3M', '-minrate:v:1', '3M', '-bufsize:v:1', '3M', '-preset', 'slow', '-g', '48', '-sc_threshold', '0', '-keyint_min', '48',
            '[v3out]', '-c:v:2', 'libx264', '-x264-params', 'nal-hrd=cbr:force-cfr=1', '-b:v:2', '1M', '-maxrate:v:2', '1M', '-minrate:v:2', '1M', '-bufsize:v:2', '1M', '-preset', 'slow', '-g', '48', '-sc_threshold', '0', '-keyint_min', '48',
            '-map', 'a:0', '-c:a:0', 'aac', '-b:a:0', '96k', '-ac', '2',
            '-map', 'a:0', '-c:a:1', 'aac', '-b:a:1', '96k', '-ac', '2',
            '-map', 'a:0', '-c:a:2', 'aac', '-b:a:2', '48k', '-ac', '2',
            '-f', 'hls',
            '-hls_time', '2',
            '-hls_playlist_type', 'vod',
            '-hls_flags', 'independent_segments',
            '-hls_segment_type', 'mpegts',
            '-hls_segment_filename', 'stream_%v/data%02d.ts',
            '-master_pl_name', 'master.m3u8',
            '-var_stream_map', 'v:0,a:0 v:1,a:1 v:2,a:2', 'stream_%v.m3u8'
        )
        .run()
    )
    

    Aquí, primero importamos el módulo ffmpeg, el cual proporciona una clase ffmpeg para construir y ejecutar comandos ffmpeg. Luego creamos un objeto stream especificando el archivo de entrada, y usamos el método filter_complex() para definir el filtro para dividir y escalar las corrientes de video. Finalmente, usamos el método output() para especificar los formatos y opciones de salida, y ejecutamos el comando usando el método run().

    Ten en cuenta que las opciones pasadas al método output() deben ser especificadas como argumentos individuales del método, con el formato '-opción', 'valor'. Además, la opción var_stream_map requiere un valor de cadena que no se escapa con comillas, por lo que la pasamos como un argumento separado del método.

Comments are closed.