Rangka NB bermaksud bilangan rangka dalam satu strim fail video atau audio. Huruf NB ialah singkatan bagi "number". FFmpeg dan program ffprobe memanggil medan ini nb_frames.
Satu fail boleh mengandungi beberapa strim, dan setiap strim mempunyai nilai Rangka NB sendiri. Fail dengan satu strim video dan satu strim audio mempunyai 2 kiraan berasingan. Strim NB ialah nilai yang berbeza: ia mengira strim dalam fail, bukan rangka dalam satu strim.
Apakah itu bingkai
Dalam strim video, satu rangka ialah satu imej pegun daripada video. Dalam strim audio, maksudnya bergantung pada format.
Dalam AIFF, satu rangka sampel mengandungi satu sampel bagi setiap saluran audio. Dalam MP3, rangka ialah blok yang lebih besar, dan FFmpeg mendarab bilangan rangka dengan bilangan sampel setiap rangka untuk mendapatkan panjangnya. Jadi anda tidak boleh membandingkan secara terus kiraan audio daripada satu format dengan kiraan daripada format lain.
Bagaimana rupa nilai tersebut
Nilai adalah nombor bulat apabila diketahui. Nilai berikut muncul dalam kod, dokumentasi dan keputusan ujian FFmpeg:
708: kiraan bagi satu strim video dalam salah satu fail ujian FFmpeg.1: kiraan bagi satu imej pegun dalam fail HEIC.0: nilai yang digunakan antara muka pengaturcaraan FFmpeg apabila nombor tidak diketahui.N/A: teks yang dicetak oleh output lalai ffprobe apabila nilainya 0. Output JSON dan XML tidak menyertakan medan ini.
Nilai 0 atau N/A, atau medan yang tiada, tidak bermaksud strim itu kosong. Nilai itu hanya menunjukkan bahawa FFmpeg tidak menetapkan sebarang kiraan dalam medan ini.
Dari mana nilai itu datang
Rangka NB biasanya datang daripada struktur fail itu sendiri, jadi FFmpeg tidak perlu mengira rangka. Sumbernya bergantung pada format:
- MP4 dan MOV: FFmpeg menambah bilangan sampel dalam jadual masa ke sampel, iaitu atom
stts. - AVI: FFmpeg membaca nombor 32-bit daripada pengepala strim, iaitu cebisan
strh. - AIFF: FFmpeg membaca medan
numSampleFramesdaripada Common Chunk. - WAV, MP3, FLAC dan MKV: pembaca FFmpeg untuk format ini tidak menetapkan nilai tersebut, jadi output lalai ffprobe mencetak
N/A.
Fail MKV masih boleh menyimpan kiraan di bawah nama lain. Program mkvmerge menulis tag bernama NUMBER_OF_FRAMES untuk setiap trek.
Cara mengira bilangan bingkai
Rangka NB hanya mengulangi nombor dalam struktur fail. Nombor itu tidak membuktikan bahawa semua rangka benar-benar ada dalam fail. Satu fail ujian MOV dalam FFmpeg menyimpan kiraan 708, tetapi ffprobe hanya membaca 66 paket dan 65 rangka daripada fail itu.
Untuk mengukur kiraan, jalankan ffprobe dengan pilihan -show_streams dan -count_frames. Program ffprobe kemudian menyahkod strim dan melaporkan keputusan dalam medan berasingan, nb_read_frames. Ini mengambil lebih masa kerana ffprobe perlu menyahkod setiap rangka.
Gunakan semakan ini untuk strim video. Dalam fail AIFF, ffprobe mengira blok yang dinyahkod yang masing-masing mengandungi banyak rangka sampel, jadi kedua-dua nombor berbeza walaupun dalam fail yang lengkap.
Pilihan -count_packets, yang juga digunakan dengan -show_streams, mengira paket tanpa menyahkodnya dan melaporkan keputusan dalam nb_read_packets. Satu paket video biasanya mengandungi satu rangka termampat, tetapi satu paket audio boleh mengandungi beberapa rangka.
Mengapa ia penting
Untuk strim video, kiraan rangka dan tempoh bersama-sama memberikan kadar bingkai purata. Pembaca MP4 dan MOV FFmpeg mengira kadar daripada kiraan rangka dan tempoh. Dalam fail ujian yang sama, 708 rangka dalam 23.613333 saat memberikan lebih kurang 29.98 rangka sesaat.
Kiraan ini juga membantu anda menyemak fail video. Jika kiraan yang diukur jauh di bawah kiraan yang disimpan, sebahagian data video mungkin hilang.