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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.