Determine la tasa de bits de video usando ffmpeg

17

Estoy tratando de determinar la tasa de bits de video (para la transcodificación) usando el comando ffmpeg, intenté seguir el comando.

ffmpeg -i 28572615.wmv

y produce el siguiente resultado

    Input #0, asf, from '28572615.wmv':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
    encoder         : Lavf57.36.100
  Duration: 00:02:50.92, start: 0.000000, bitrate: 1982 kb/s
    Stream #0:0: Video: wmv2 (WMV2 / 0x32564D57), yuv420p, 640x360, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, 2 channels, fltp, 128 kb/s
At least one output file must be specified

Si uso otro video

ffmpeg -i with_out_sound.mp4

entonces obtengo el siguiente resultado

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'with_out_sound.mp4':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6avc1mp41
    creation_time   : 2015-04-21 05:14:57
  Duration: 00:00:27.86, start: 0.000000, bitrate: 500 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 622x480 [SAR 1:1 DAR 311:240], 100 kb/s, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc (default)
    Metadata:
      creation_time   : 2015-04-21 05:14:57
      handler_name    : VideoHandler
At least one output file must be specified

El punto que me confunde es que ¿debería buscar en la línea de metadatos Duración o en la línea de metadatos Video Stream (Stream # 0: 0) para ver la tasa de bits de video?

usuario2528012
fuente
Para el segundo archivo, ¿cuál es el tamaño del archivo?
Gyan
@Mulvya el tamaño del segundo archivo de video es 1.66 MB
user2528012
Entonces, ambas lecturas son incorrectas: la tasa de bits real es de 61 kb / s. Esto es probablemente porque es un segmento DASH.
Gyan
¿Cómo determina ffmpeg las tasas de bits de flujo individuales? explica cómo se determinan las tarifas.
creidhne

Respuestas:

16

La tasa de bits de video se muestra en la información de transmisión de video. La información de formato contiene la tasa de bits para todas las transmisiones más la sobrecarga de muxing.

Si falta la tasa de bits de video, entonces una forma sucia de obtener ese valor es restando la tasa de bits de todas las demás secuencias de la tasa de bits total.

Si eso no es viable, un método engorroso es ejecutar ffprobe para mostrar los tamaños de paquete y la duración de la transmisión y luego calcular la tasa de bits sumando todas las líneas excepto la última y dividiendo por el valor en la última línea.

ffprobe -select_streams v -show_entries packet=size:stream=duration -of compact=p=0:nk=1 video.mp4

Salida:

4199      
2627      
1792      
3921      
2993      
...  
2301      
3076
2879
1543.00000

Por supuesto, esta es una solución de último recurso, y solo es aplicable si la información de la transmisión de video no tiene una tasa de bits y tampoco es posible estimar la tasa de bits descontando la tasa de todas las demás transmisiones.

Gyan
fuente