Diksiyonaryo

Ano ang Ibig Sabihin ng NB Frames?

Sinasabi sa iyo ng NB Frames kung ilang frame ang laman ng isang video o audio stream. Hindi iniulat ng FFmpeg ang numerong ito para sa bawat format, kaya maaaring hindi alam ang halaga.

nb-frames

Ang NB Frames ay ang bilang ng frames sa isang stream ng video o audio file. Ang mga titik na NB ay nangangahulugang "number". FFmpeg at ang program nitong ffprobe ay tumatawag sa field na ito na nb_frames.

Maaaring maglaman ang isang file ng ilang stream, at bawat stream ay may sarili nitong NB Frames na halaga. Ang isang file na may isang video stream at isang audio stream ay may 2 magkaibang bilang. Iba ang NB Streams: binibilang nito ang mga stream sa file, hindi ang frames sa loob ng isang stream.

Ano ang frame

Sa isang video stream, ang frame ay isang static na larawan ng video. Sa isang audio stream, nag-iiba ang kahulugan depende sa format.

Sa AIFF, ang sample frame ay naglalaman ng isang sample para sa bawat audio channel. Sa MP3, ang frame ay isang mas malaking bloke, at imumultiply ng FFmpeg ang frame count sa samples per frame para makuha ang haba. Kaya hindi mo maihahambing nang direkta ang audio count ng isang format sa count ng ibang format.

Kung ano ang hitsura ng mga halaga

Ang halaga ay isang buong numero kapag ito ay alam. Makikita ang mga halagang ito sa code, dokumentasyon, at test results ng FFmpeg:

  • 708: ang bilang para sa isang video stream sa isa sa mga test file ng FFmpeg.
  • 1: ang bilang para sa isang solong static na larawan sa isang HEIC file.
  • 0: ang halagang ginagamit ng programming interface ng FFmpeg kapag hindi alam ang numero.
  • N/A: ang text na ipiniprint ng default output ng ffprobe kapag 0 ang halaga. Sa JSON at XML output nito, iniiwan ang field na ito.

Ang halagang 0 o N/A, o isang nawawalang field, ay hindi nagsasabing walang laman ang stream. Sinasabi lang ng halaga na walang count na itinalaga ng FFmpeg sa field na ito.

Kung saan nagmumula ang halaga

Kadalasang nanggagaling ang NB Frames sa sariling istruktura ng file, kaya hindi na kailangang bilangin ng FFmpeg ang mga frame. Depende sa format ang pinagmumulan:

  • MP4 at MOV: Pinagdadagdag ng FFmpeg ang sample counts sa time-to-sample table, na siyang stts atom.
  • AVI: Binabasa ng FFmpeg ang isang 32-bit na numero mula sa stream header, na siyang strh chunk.
  • AIFF: Binabasa ng FFmpeg ang field na numSampleFrames mula sa Common Chunk.
  • WAV, MP3, FLAC, at MKV: Ang mga reader ng FFmpeg para sa mga format na ito ay hindi nagtatakda ng halaga, kaya ang default output ng ffprobe ay nagpi-print ng N/A.

Maaaring maglaman pa rin ng bilang ang isang MKV file sa ibang pangalan. Ang program na mkvmerge ay nagsusulat ng tag na pinangalanang NUMBER_OF_FRAMES para sa bawat track.

Paano bilangin ang mga frame

Inuulit lang ng NB Frames ang numero sa istruktura ng file. Hindi nito pinapatunayan na talagang nasa file ang lahat ng frame. Sa isang MOV test file sa FFmpeg, may nakaimbak na bilang na 708, pero 66 packets at 65 frames lang ang nababasa ng ffprobe mula sa file na iyon.

Para sukatin ang bilang, patakbuhin ang ffprobe gamit ang mga option na -show_streams at -count_frames. Ida-decode ng ffprobe ang stream at irereport ang resulta sa hiwalay na field na nb_read_frames. Mas matagal ito dahil kailangang i-decode ng ffprobe ang bawat frame.

Gamitin ang pagsusuring ito para sa mga video stream. Sa isang AIFF file, binibilang ng ffprobe ang mga decoded block na bawat isa ay may maraming sample frame, kaya magkaiba ang dalawang numero kahit kumpleto ang file.

Ang option na -count_packets, na ginagamit din kasama ng -show_streams, ay binibilang ang packets nang hindi dine-decode at nirereport ang resulta sa nb_read_packets. Karaniwang naglalaman ang isang video packet ng isang compressed frame, pero maaaring maglaman ang isang audio packet ng ilan.

Bakit ito mahalaga

Para sa isang video stream, ang frame count at ang duration ay magkasamang nagbibigay ng average na frame rate. Kinakalkula ng MP4 at MOV reader ng FFmpeg ang rate mula sa frame count at duration. Sa parehong test file, ang 708 frames sa loob ng 23.613333 segundo ay lumalabas na mga 29.98 frames per second.

Nakakatulong din ang bilang para i-check ang isang video file. Kung ang nasukat na bilang ay malayong mas mababa kaysa sa nakaimbak na bilang, maaaring may nawawalang bahagi ng video data.