Kamus

Apakah B-Frame dalam video?

B-frame ialah bingkai video yang boleh menggunakan kedua-dua bingkai lebih awal dan kemudian. Ketahui cara B-frame berfungsi dan maksud nilai Has B Frames dalam fail anda.

b-frames

B-frame ialah bingkai video yang boleh menggunakan bingkai lebih awal dan bingkai lebih lewat untuk membina imejnya. Huruf B bermaksud dua hala (bidirectional). B-frame menawarkan lebih banyak pemampatan berbanding jenis bingkai lain, yang membantu mengekalkan saiz video kekal kecil.

Dalam metadata fail video, anda mungkin melihat medan bernama Has B Frames, yang juga ditulis has_b_frames. Nama ini seolah-olah memerlukan jawapan ya atau tidak, tetapi nilainya ialah nombor. Nombor ini memberitahu anda berapa banyak bingkai yang perlu dapat disimpan dalam memori oleh penyahkod untuk memaparkan video dalam tertib yang betul.

Bagaimana B-frame berbeza daripada I-frame dan P-frame

Pemampatan video secara umum berfungsi dengan membandingkan bingkai dan merekodkan perbezaan di antaranya. Video MPEG-2 mentakrifkan 3 jenis bingkai ini:

  • I-frame: dikod tanpa merujuk kepada bingkai lain, jadi penyahkodan boleh bermula di sini
  • P-frame: boleh menggunakan I-frame atau P-frame sebelumnya
  • B-frame: boleh menggunakan I-frame atau P-frame sebelumnya dan seterusnya

B-frame boleh bergantung pada bingkai yang muncul lebih lewat dalam masa, jadi bingkai yang lebih lewat itu mesti disimpan dahulu. Oleh itu, tertib simpanan berbeza daripada tertib yang anda lihat pada skrin. Urutan MPEG-2 biasa kelihatan seperti ini:

  • Tertib paparan: B1 B2 I3 B4 B5 P6 B7 B8 P9 B10 B11 P12
  • Tertib simpanan: I3 B1 B2 P6 B4 B5 P9 B7 B8 P12 B10 B11

Bagaimana rupa nilai tersebut

Has B Frames ialah nombor bulat. FFmpeg menghuraikan nilai ini sebagai saiz penimbal penyusunan semula bingkai dalam penyahkod. Untuk video MPEG-2, FFmpeg menamakan 2 nilai:

  • 0: video kelewatan rendah dengan I-frame dan P-frame sahaja
  • 1: video dengan I-frame, P-frame dan B-frame

Pengekod H.264 dan HEVC juga boleh mengekalkan beberapa B-frame sebagai rujukan untuk bingkai lain. Fail ujian FFmpeg untuk H.264 menunjukkan bagaimana ini mengubah nilainya. Nama fail memberikan tetapan pengekod:

  • Maksimum 3 B-frame berturut-turut, tiada yang disimpan sebagai rujukan: 1
  • Maksimum 3 B-frame berturut-turut, sebahagian disimpan sebagai rujukan: 2
  • Maksimum 4 B-frame berturut-turut, sebahagian disimpan sebagai rujukan: 2

Jadi nilai ini bukan kiraan B-frame. Program ffprobe menunjukkan jenis setiap bingkai sebagai nilai pict_type: I, P atau B. Medan NB Frames memberikan bilangan bingkai, tetapi bukan jenisnya.

Dari mana nilai itu datang

Nama medan datang daripada FFmpeg, yang program ffprobe-nya memaparkan has_b_frames untuk strim video. Strim H.264 boleh menyatakan nombor ini dalam pengepala tersendiri. Jika pengepala tidak menyatakan nombor tersebut, FFmpeg mengiranya daripada bingkai dan masa masing-masing.

Tetapan pengekod menentukan sama ada video menggunakan B-frame. Dalam FFmpeg dan dalam pengekod Microsoft H.264, tetapan 0 mematikan B-frame.

Fail mana yang membawanya

Medan ini hanya wujud untuk strim video. Anda boleh melihat medan ini untuk video dalam fail MP4, MOV, MKV, WebM dan AVI. Fail MOV dengan bingkai yang disusun semula juga menyimpan jadual dengan masa antara penyahkodan dan paparan untuk setiap bingkai.

Codec menentukan sama ada B-frame boleh digunakan. Video MPEG-2 dan profil H.264 Main boleh menggunakannya, tetapi profil H.264 Baseline tidak boleh. VP8, iaitu codec yang digunakan dalam fail WebM, tidak mempunyai B-frame kerana bingkainya tidak pernah diramal daripada bingkai yang lebih lewat.

Mengapa ia penting

B-frame membantu menjadikan video lebih kecil, tetapi ia menambah kelewatan. Pengekod perlu menyusun semula bingkai sebelum menyimpannya, dan kelewatan ini bergantung pada bilangan B-frame berturut-turut.

Video yang disusun semula juga mempunyai 2 masa berbeza untuk setiap bingkai: masa untuk menyahkod bingkai dan masa untuk memaparkannya. FFmpeg memberikan kedua-duanya sebagai cap masa (timestamp) dalam asas masa strim.