Use el script de Python para llamar a ffmpeg para descargar el archivo de video segmentado ts

¡Trabajar juntos para crear y crecer juntos! Este es el día 30 de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de agosto" Haga clic ver los detalles del evento

prefacio

Los videos en línea de hoy no están en formato mp4, todos son formatos de archivo ts. Para evitar la piratería y el abuso de tráfico y ancho de banda, el formato de archivo ts es una tecnología de segmentación de video, que requiere principalmente un índice. El archivo enumera todos los información del segmento del video, la duración del tiempo y alguna información sobre el nombre del archivo ts:

imagen.png

Esta información de subsegmentos se carga de forma asíncrona durante la reproducción, y también es muy conveniente saltar y omitir la carga de ciertos segmentos calculando directamente la duración.

imagen.png

La descarga de un archivo ts solo no se puede reproducir directamente, entonces, ¿cómo resolver este problema? Hay muchas maneras, encontré la solución más adecuada para personas técnicas como nosotros, que es usar el famoso ffmpeg, que puede usar directamente la línea de comando ffmpeg para acceder al archivo de índice remoto para descargarlo y combinarlo en un archivo MP4. Hoy, vamos a presentar brevemente cómo usarlo.

descargar

ffmpeg es un conjunto de herramientas de software muy fácil de usar para procesar audio y video. Para usar ffmpeg en Win10, debe descargarlo y luego agregar variables de entorno. Sitio web de descarga: Descargar FFmpeg

imagen.png

Una vez completada la descarga, descomprímala y mueva el archivo descomprimido a una ubicación adecuada:

imagen.png

Para agregar variables de entorno, puede consultar el artículo anterior ¿Fiddler no puede rastrear enlaces HTTPS? Mueva el certificado de Fiddler al directorio del certificado raíz del sistema a través de permisos de raíz.Al igual que configurar Opnen SSL, aquí solo se muestra la configuración final:

imagen.png

En este punto, verifique la línea de comando para ver si la variable de entorno es correcta:

ffmpeg -version
复制代码

imagen.pnginstalado exitosamente

descargar

Descargar Para encontrar el enlace al archivo de índice del sitio web que debe descargarse, lo veo aquí en la consola de depuración F12 del navegador:

imagen.png

Si el comando descargado usando el comando nativo es:

ffmpeg -i {m3u8链接} -c copy -bsf:a aac_adtstoasc {文件名}.mp4'
复制代码

Puede descargar directamente usando el comando nativo, pero el sistema Win10 no puede reconocer las variables de entorno de ffmpeg en la línea de comandos de Python: Entonces, para agregar el directorio específico de ffmpeg, aquí hay una función simple para mostrar cómo usar Python para llamar a ffmpeg a descargar videos:


def one_video(urls, file_name):
    save_path = 'D:\Download\ts\'+file_name
    shell_str = 'D:\MiniTool\ffmpeg\bin\ffmpeg.exe -i '+url+' -c copy -bsf:a aac_adtstoasc '+save_path+'.mp4'
    os.system(shell_str)
urls = 'https://*****/videos/augdeduuigdrypzmvseh/index.m3u8?token=eyssddcflgjkmddsds********' 
file_name = 'test'
one_video(urls, file_name)
复制代码

Efecto:

imagen.png

imagen.png

Resumir

ffmpeg es una herramienta muy poderosa, pero el hilo único en el script es demasiado lento. Si el archivo es grande y hay muchos archivos, es muy lento. Lo voy a usar en Scrapy.

Además, este archivo de índice m3u8 es un archivo muy importante, que generalmente está encriptado. En mi ejemplo, hay una protección de repetición de token, a la que se accede una vez, y el segundo acceso caducará. Debe descifrarse en la página web. to No hay problema con este token, pero la situación real es generalmente más complicada.

Supongo que te gusta

Origin juejin.im/post/7136823714410135559
Recomendado
Clasificación