Bestimmen Sie die Videobitrate mit ffmpeg

17

Ich versuche, die Videobitrate (für das Transcodieren) mit dem Befehl ffmpeg zu ermitteln. Ich habe versucht, den folgenden Befehl auszuführen.

ffmpeg -i 28572615.wmv

und es erzeugt die folgende Ausgabe

    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

Wenn ich ein anderes Video verwende

ffmpeg -i with_out_sound.mp4

dann erhalte ich die folgende Ausgabe

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

Der Punkt, der mich verwirrt, ist, dass ich in der Metadatenzeile "Dauer" oder in der Metadatenzeile "Videostream" (Stream # 0: 0) nach der Videobitrate suchen muss.

user2528012
quelle
Wie groß ist die zweite Datei?
Gyan
@ Mulvya 2. Video Dateigröße beträgt 1,66 MB
user2528012
Beide Werte sind also falsch - die tatsächliche Bitrate beträgt 61 kb / s. Dies liegt wahrscheinlich daran, dass es sich um ein DASH-Segment handelt.
Gyan
Wie ermittelt ffmpeg die einzelnen Stream-Bitraten? erklärt, wie die Sätze ermittelt werden.
Creidhne

Antworten:

16

Die Videobitrate wird in den Videostream-Informationen angezeigt. Die Formatinformationen enthalten die Bitrate für alle Streams plus Muxing-Overhead.

Wenn die Video-Bitrate fehlt, können Sie diesen Wert auf falsche Weise ermitteln, indem Sie die Bitrate aller anderen Streams von der Gesamt-Bitrate subtrahieren.

Wenn dies nicht möglich ist, ist es eine umständliche Methode, ffprobe auszuführen, um die Paketgrößen und die Stream-Dauer anzuzeigen, und dann die Bitrate zu berechnen, indem alle Zeilen außer der letzten summiert und durch den Wert in der letzten Zeile dividiert werden.

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

Ausgabe:

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

Dies ist natürlich eine Lösung der letzten Wahl und gilt nur, wenn die Videostream-Informationen keine Bitrate aufweisen und die Schätzung der Bitrate durch Abzinsung der Rate aller anderen Streams ebenfalls nicht möglich ist.

Gyan
quelle