Kamus

Apa Arti NB Frames?

NB Frames memberi tahu Anda berapa banyak frame yang dimiliki sebuah stream video atau audio. FFmpeg tidak melaporkan angka ini untuk setiap format, sehingga nilainya bisa tidak diketahui.

nb-frames

NB Frames berarti jumlah frame dalam satu stream dari sebuah file video atau audio. Huruf NB adalah singkatan dari "number". FFmpeg dan program ffprobe menyebut field ini nb_frames.

Satu file dapat berisi beberapa stream, dan setiap stream memiliki nilai NB Frames sendiri. Sebuah file dengan satu stream video dan satu stream audio memiliki 2 hitungan terpisah. NB Streams adalah nilai yang berbeda: nilai ini menghitung jumlah stream dalam file, bukan jumlah frame di dalam satu stream.

Apa itu frame

Dalam stream video, satu frame adalah satu gambar diam dari video. Dalam stream audio, artinya bergantung pada formatnya.

Dalam AIFF, satu sample frame berisi satu sampel untuk setiap channel audio. Dalam MP3, sebuah frame adalah blok yang lebih besar, dan FFmpeg mengalikan jumlah frame dengan jumlah sampel per frame untuk mendapatkan durasi. Jadi Anda tidak dapat langsung membandingkan hitungan audio dari satu format dengan hitungan dari format lain.

Seperti apa bentuk nilainya

Nilainya berupa bilangan bulat ketika diketahui. Nilai-nilai berikut muncul dalam kode, dokumentasi, dan hasil pengujian FFmpeg:

  • 708: hitungan untuk satu stream video dalam salah satu file uji FFmpeg.
  • 1: hitungan untuk satu gambar diam di dalam file HEIC.
  • 0: nilai yang digunakan antarmuka pemrograman FFmpeg ketika jumlahnya tidak diketahui.
  • N/A: teks yang ditampilkan output standar ffprobe ketika nilainya 0. Output JSON dan XML-nya menghilangkan field tersebut.

Nilai 0 atau N/A, atau field yang tidak ada, tidak berarti stream tersebut kosong. Nilai itu hanya menunjukkan bahwa FFmpeg tidak menetapkan hitungan di field ini.

Dari mana nilai berasal

NB Frames biasanya berasal dari struktur internal file, sehingga FFmpeg tidak perlu menghitung frame. Sumbernya bergantung pada format:

  • MP4 dan MOV: FFmpeg menjumlahkan jumlah sampel dalam time-to-sample table, yaitu atom stts.
  • AVI: FFmpeg membaca angka 32-bit dari header stream, yaitu chunk strh.
  • AIFF: FFmpeg membaca field numSampleFrames dari Common Chunk.
  • WAV, MP3, FLAC, dan MKV: pembaca FFmpeg untuk format-format ini tidak menetapkan nilai tersebut, sehingga output standar ffprobe menampilkan N/A.

File MKV tetap dapat menyimpan hitungan dengan nama lain. Program mkvmerge menulis tag bernama NUMBER_OF_FRAMES untuk setiap track.

Cara menghitung frame

NB Frames hanya mengulangi angka yang ada di struktur file. Angka tersebut tidak membuktikan bahwa semua frame benar-benar ada di dalam file. Salah satu file uji MOV di FFmpeg menyimpan hitungan 708, tetapi ffprobe hanya membaca 66 paket dan 65 frame dari file tersebut.

Untuk mengukur hitungan, jalankan ffprobe dengan opsi -show_streams dan -count_frames. Program ffprobe kemudian mendekode stream dan melaporkan hasilnya di field terpisah, nb_read_frames. Proses ini memakan lebih banyak waktu karena ffprobe harus mendekode setiap frame.

Gunakan pemeriksaan ini untuk stream video. Dalam file AIFF, ffprobe menghitung blok terdekripsi yang masing-masing berisi banyak sample frame, sehingga kedua angka tersebut berbeda bahkan pada file yang lengkap.

Opsi -count_packets, yang juga digunakan dengan -show_streams, menghitung paket tanpa mendekodenya dan melaporkan hasilnya di nb_read_packets. Satu paket video biasanya berisi satu frame terkompresi, tetapi satu paket audio dapat berisi beberapa frame.

Mengapa ini penting

Untuk stream video, jumlah frame dan durasi bersama-sama memberikan frame rate rata-rata. Reader MP4 dan MOV FFmpeg menghitung frame rate dari jumlah frame dan durasi. Dalam file uji yang sama, 708 frame selama 23,613333 detik menghasilkan kira-kira 29,98 frame per detik.

Hitungan ini juga membantu Anda memeriksa file video. Jika hitungan terukur jauh di bawah hitungan yang tersimpan, sebagian data video mungkin hilang.