Sitio web oficial https://ffmpeg.org/download.html
y agregado a las variables de entorno
ffmpeg-v ffmpeg versión 6.0 Copyright (c) 2000-2023 los desarrolladores de FFmpeg crearon con Apple clang versión 14.0.3 (clang-1403.0.22.14.1)
Mostrar el número de versión indica éxito
En el lado del navegador, presione F12 para ingresar a la interfaz para ver las solicitudes de red, filtrar la información m3u8
, buscar Vista previa del contenido, hacer clic en el video, buscar la reproducción de la transmisión en vivo, hacer clic en él y arrastrar la barra de progreso hacia atrás si no hay. contenido, actualícelo. Se accede a esta solicitud antes de que se cargue el video, es posible que no se grabe.
El primer paso es echar un vistazo a la sala de ordenadores de donde procede header
.
En el segundo paso, Ctrl + A selecciona todo el contenido de Vista previa.
Algo como esto:
#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:1#EXT-X-TARGETDURATION:35#EXTINF:33.000,xxx/1.ts?auth_key=xxx ...
Guárdelo como aa.bj.m3u8
, en el mismo directorio que el script de Python. Tenga en cuenta que bj en el medio puede ser diferente . sz significa Shenzhen y bj significa Beijing.
Luego ejecute el script python3 a.py
Se creará una carpeta de caché que admite la reanudación de la descarga y se eliminará automáticamente una vez completada la descarga.
El parámetro -mac-crf
no se puede utilizar para comprimir el vídeo y es necesario reemplazar las instrucciones del codificador.
Versión de demostración, diferente del script de automatización
solicitudes de importación, os, re, time# sz significa Shenzhen, bj significa Beijing, base_url = "https://dtliving-sz.dingtalk.com/live_hp/" def get_url(): url_list = [] con open("aa. m3u8", "r") como f: s = f.readlines() para i en s: if re.match(r".*?ts.*?", i): url_list.append(base_url + i) return url_listdef download(): urls = get_url() para i, url en enumerate(urls): con open(f"{i + 1}.ts", "wb") como f: respuesta = request.get(url[: -1]) # Eliminar caracteres de nueva línea print(i, "ok") # time.sleep(1)# Integrar nombres de archivos para facilitar la fusión de FFmpeg def parse_filename(): base_path = os.getcwd() urls = get_url() con open ("archivo.txt", "w+") como f: para i en el rango(1, 1 + len(urls)): ruta = f"archivo '{base_path}/{i}.ts'n" print( ruta) f.write(ruta)if __name__ == "__main__": descargar() print("descarga finalizada...") parse_filename()
Si tiene éxito, se descargarán una serie de archivos二进制
, 1.ts, 2.ts, 3.ts, ...
Si es incorrecto, es un archivo con contenido en formato xml
y se mostrará un mensaje de error al abrirlo.
La solución es ver si base_url
no coincide o si sz y bj son incorrectos.
ffmpeg -f concat -safe 0 -i archivo.txt -c copiar a.mp4
Creo que si el archivo es demasiado grande después de fusionarlo, puede usar ffmpeg
para volver a comprimirlo o usar h256/hevc
para volver a codificarlo y obtener un tamaño de archivo más pequeño.
Se recomienda utilizar la compresión de software permute.
Usar un formato de codificación de video más eficiente es un método común para reducir el tamaño de los archivos de video usando un formato de codificación de video con una tasa de compresión más alta. A continuación se muestra un ejemplo del uso de FFmpeg para convertir video al formato de codificación H.265:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
El comando anterior convierte el vídeo de entrada input.mp4 al formato de codificación H.265 y guarda el resultado como archivo output.mp4. Entre ellos, la opción -c:v indica el codificador de video, libx265 indica el uso del codificador x265, la opción -crf indica la calidad del video y 28 indica la calidad del video de destino. Cuanto menor sea el valor, mayor será la calidad del video y la calidad del video. mayor el tamaño del archivo.
Prueba, el video de 1.3 g se comprime a un tamaño de 231 m, pero la velocidad es demasiado lenta = 0.8, 3 horas de compresión de video me llevaron 4 horas, busqué otros métodos
hevc_videotoolbox no es tan bueno como libx265, pero es muy rápido en mi MacBook air 13 m1.
Como la mayoría de los codificadores acelerados por hardware, hevc_videtoolbox no es tan eficiente como libx265. Por lo tanto, es posible que deba darle una tasa de bits significativamente más alta en comparación con libx265 para igualar una calidad equivalente. Esto puede anular el propósito de recodificar de H.264 a HEVC/H.265.
Sitio web oficial https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox
# VideoToolbox [¶](https://trac.ffmpeg.org/wiki/HWAccelIntro#VideoToolbox "链接到这一节") [VideoToolbox](https://developer.apple.com/documentation/videotoolbox) is the macOS framework for video decoding and encoding. The following codecs are supported: - Decoding: H.263, H.264, HEVC, MPEG-1, MPEG-2, MPEG-4 Part 2, ProRes - Encoding: H.264, HEVC, ProRes To use H.264/HEVC hardware encoding in macOS, just use the encoder `-c:v h264_videotoolbox` or `-c:v hevc_videotoolbox` for H.264 or HEVC respectively. Check `ffmpeg -h encoder=...` to see encoder options. VideoToolbox supports two types of rate control: - Bitrate-based using `-b:v` - Constant quality with `-q:v`. Note that the scale is 1-100, with 1 being the lowest and 100 the highest. Constant quality mode is only available for Apple Silicon and from ffmpeg 4.4 and higher.
Active la aceleración de GPU 3 y especifique el codificador de video para codificar. Cabe señalar que VideoToolbox no es compatible con CRF, por lo que la tasa de bits debe especificarse mediante -b:v
.
El códec AVOption crf (seleccione la calidad para el modo de calidad constante) no se ha utilizado para ninguna transmisión. La razón más probable es que el tipo sea incorrecto (p. ej., una opción de video sin transmisiones de video) o que sea una opción privada de algún codificador. En realidad, no se utiliza para ninguna transmisión.
Probar las opciones predeterminadas es aproximadamente 10 veces más rápido
ffmpeg video -i input.mp4 -c:v hevc_videotoolbox output.mp4
frame=126360 fps=114 q=-0.0 Lsize= 413400kB tiempo=02:55:29.95 bitrate= 321.6kbits/s dup=663 drop=0 velocidad=9.51x vídeo: 315854 kB audio: 93814 kB subtítulos: 0 kB otras transmisiones: 0 kB encabezados globales: 0 kB sobrecarga de muxing: 0,910847 %
Es aproximadamente 10 veces más rápido que el anterior y el tamaño del archivo ha aumentado de 800 ma 400 m, pero la tasa de compresión ha disminuido. Probaré algunos archivos más.
Las codificaciones correspondientes a h264 en macOS incluyen libx264 y h264_videotoolbox. Las dos velocidades son similares, pero libx264 tiene un alto uso de CPU y el tamaño del archivo transcodificado también es pequeño. Escuché que los requisitos de decodificación para reproducir videos serán mayores.
Después de mi prueba, descubrí que los archivos de grabación y transmisión usan codificación h264. La codificación H265 tiene ventajas obvias en 4k y la reproducción en vivo de DingTalk solo tiene 12 cuadros y una calidad de imagen de 1080p. Grabación y retransmisión que estudié. La mayoría son ppt y hay muy pocas tomas deportivas.
Se recomiendan las siguientes instrucciones:
find ./ -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libx264 -crf 30 -c:a aac "${0%%.mp4}-hevc.mp4"' {} ;
Fuente del código https://blog.51cto.com/u_15366127/6084937 ↩
Varias formas de usar ffmpeg para reducir el tamaño del video https://juejin.cn/post/7222575963564654648 ↩
Aceleración de hardware FMPEG https://blog.xm.mk/posts/1a3h/ ↩