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.

El bitrate de ffmpeg es un 10% más grande de lo solicitado.

Una pregunta sencilla. Tengo un script de ffmpeg.

Solicito -b:v:0 1000k pero obtengo la salida BANDWIDTH=1100000 en mi lista de reproducción principal, esperaba BANDWIDTH=1000000.

Como puedes ver, no hay flujos de audio. ¿Por qué la BANDWIDTH es un 10% mayor en cada ocasión que la tasa de bits solicitada?

Gracias de antemano. A continuación se muestra el script y la salida.

Script:

ffmpeg -i rgb.mp4 -hide_banner # volcar información del flujo de vídeo

rm -rf hls

ffmpeg -i rgb.mp4 \
  -v warning -preset ultrafast -g 60 -sc_threshold 0 \
  -map 0:0 -map 0:0 -map 0:0 -map 0:0 \
  -s:v:0 1440x1080 -c:v:0 libx264 -b:v:0 1000k \
  -s:v:1 1440x1080 -c:v:1 libx264 -b:v:1 2000k \
  -s:v:2 1920x1440 -c:v:2 libx264 -b:v:2 3000k \
  -s:v:3 1920x1440 -c:v:3 libx264 -b:v:3 4000k \
  -var_stream_map "v:0 v:1 v:2 v:3" \
  -master_pl_name master.m3u8 -f hls \
  -hls_time 6 -hls_list_size 0 -hls_playlist_type vod \
  -hls_segment_filename "hls/v%v/chunk%d.ts" "hls/v%v/index.m3u8";

cat hls/master.m3u8

Salida:

$ sh ./ffmpeg-test-script.sh
Entrada #0, mov, mp4, m4a, 3gp, 3g2, mj2, desde 'rgb.mp4':
  Metadatos:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2021-08-03T11:45:50.000000Z
    encoder         : Lavf59.4.102
  Duración: 00:00:50.04, inicio: 0.000000, tasa de bits: 37415 kb/s
  Flujo #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1440, 37412 kb/s, 30 fps, 30 tbr, 19200 tbn (default)
    Metadatos:
      creation_time   : 2021-08-03T11:45:50.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
    Datos secundarios:
      displaymatrix: rotación de -180.00 grados
Debe especificarse al menos un archivo de salida
[swscaler @ 000001fae15daf00] formato de píxeles obsoleto utilizado, asegúrese de haber configurado el rango correctamente
[swscaler @ 000001faef115ec0] formato de píxeles obsoleto utilizado, asegúrese de haber configurado el rango correctamente
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=1100000,RESOLUTION=1440x1080,CODECS="avc1.42c028"
v0/index.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=2200000,RESOLUTION=1440x1080,CODECS="avc1.42c028"
v1/index.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=3300000,RESOLUTION=1920x1440,CODECS="avc1.42c032"
v2/index.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=4400000,RESOLUTION=1920x1440,CODECS="avc1.42c032"
v3/index.m3u8
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El valor de salida actual de BANDWIDTH no está directamente relacionado con la velocidad de bits solicitada. El valor de BANDWIDTH se calcula en función de la combinación de la velocidad de bits del video y la sobrecarga requerida para empaquetar el video en segmentos HLS. Esta sobrecarga se ve afectada por varios factores como la duración del segmento, el número de segmentos, el formato de empaquetado y más.

    En tu caso, parece que la sobrecarga de empaquetado HLS está haciendo que el valor de BANDWIDTH sea aproximadamente un 10% más alto que la velocidad de bits de video solicitada. Este es un comportamiento común en la transmisión adaptativa de velocidad de bits y no es necesariamente un problema siempre y cuando la calidad del video y el rendimiento de reproducción sean satisfactorios.

    Si necesitas un control más preciso sobre el valor de BANDWIDTH, puedes experimentar con diferentes opciones de empaquetado HLS, duraciones de segmento y parámetros de codificación de video para lograr el resultado deseado.

Comments are closed.