¡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:
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.
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
Una vez completada la descarga, descomprímala y mueva el archivo descomprimido a una ubicación adecuada:
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:
En este punto, verifique la línea de comando para ver si la variable de entorno es correcta:
ffmpeg -version
复制代码
instalado 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:
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:
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.