Tentukan bitrate video menggunakan ffmpeg

17

Saya mencoba menentukan bitrate video (Untuk transcoding) menggunakan perintah ffmpeg, saya mencoba perintah berikut.

ffmpeg -i 28572615.wmv

dan menghasilkan output berikut

    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

Jika saya menggunakan video lain

ffmpeg -i with_out_sound.mp4

maka saya mendapatkan output berikut

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

Poin saya bingung adalah apakah saya harus melihat dalam garis metadata Durasi atau garis metadata Streaming Video (Streaming # 0: 0) untuk bitrate video?

pengguna2528012
sumber
Untuk file ke-2, berapa ukuran file?
Gyan
@Mulvya ukuran file video ke-2 adalah 1,66 MB
user2528012
Jadi kedua bacaan salah - bitrate aktual adalah 61 kb / s. Ini mungkin karena ini segmen DASH.
Gyan
Bagaimana cara ffmpeg menentukan bitrate stream individual? menjelaskan bagaimana tarif ditentukan.
creidhne

Jawaban:

16

Bitrate video ditampilkan dalam info aliran video. Info format berisi bitrate untuk semua stream plus muxing overhead.

Jika bitrate video hilang, maka cara kotor untuk mendapatkan nilai itu adalah dengan mengurangi bitrate dari semua stream lainnya dari total bitrate.

Jika itu tidak layak, metode rumit adalah menjalankan ffprobe untuk menampilkan ukuran paket dan durasi streaming dan kemudian menghitung bitrate dengan menjumlahkan semua baris kecuali yang terakhir, dan membaginya dengan nilai pada baris terakhir.

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

Keluaran:

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

Tentu saja, ini adalah solusi terakhir, dan hanya berlaku jika info aliran video tidak menggunakan bitrate dan memperkirakan bitrate dengan mendiskontokan laju semua stream lainnya juga tidak dimungkinkan.

Gyan
sumber