Λεξικό

Τι σημαίνει NB Frames;

Το NB Frames σάς λέει πόσα καρέ περιέχει ένα βίντεο ή ένα ηχητικό stream. Το FFmpeg δεν αναφέρει αυτό τον αριθμό για κάθε μορφή, επομένως η τιμή μπορεί να είναι άγνωστη.

nb-frames

NB Frames σημαίνει τον αριθμό των καρέ (frames) σε ένα stream ενός αρχείου βίντεο ή ήχου. Τα γράμματα NB σημαίνουν "number" (αριθμός). Το FFmpeg και το πρόγραμμα ffprobe ονομάζουν αυτό το πεδίο nb_frames.

Ένα αρχείο μπορεί να περιέχει πολλά streams και κάθε stream έχει τη δική του τιμή NB Frames. Ένα αρχείο με ένα stream βίντεο και ένα stream ήχου έχει επομένως 2 ξεχωριστές μετρήσεις. Το NB Streams είναι διαφορετική τιμή: μετρά τα streams στο αρχείο, όχι τα καρέ μέσα σε ένα stream.

Τι είναι ένα frame

Σε ένα video stream, ένα frame είναι μία στατική εικόνα του βίντεο. Σε ένα audio stream, η σημασία εξαρτάται από τη μορφή.

Στο AIFF, ένα sample frame περιέχει ένα δείγμα για κάθε κανάλι ήχου. Στο MP3, ένα frame είναι ένα μεγαλύτερο μπλοκ και το FFmpeg πολλαπλασιάζει τον αριθμό των frames με τα δείγματα ανά frame για να βρει τη διάρκεια. Έτσι δεν μπορείτε να συγκρίνετε άμεσα μια μέτρηση ήχου από μία μορφή με μια μέτρηση από άλλη μορφή.

Πώς φαίνονται οι τιμές

Η τιμή είναι ακέραιος αριθμός όταν είναι γνωστή. Αυτές οι τιμές εμφανίζονται στον κώδικα, την τεκμηρίωση και τα αποτελέσματα δοκιμών του FFmpeg:

  • 708: η μέτρηση για ένα video stream σε ένα από τα test files του FFmpeg.
  • 1: η μέτρηση για μία στατική εικόνα σε ένα αρχείο HEIC.
  • 0: η τιμή που χρησιμοποιεί το προγραμματιστικό περιβάλλον του FFmpeg όταν ο αριθμός δεν είναι γνωστός.
  • N/A: το κείμενο που εμφανίζει η προεπιλεγμένη έξοδος του ffprobe όταν η τιμή είναι 0. Η έξοδος JSON και XML παραλείπει αυτό το πεδίο.

Μια τιμή 0 ή N/A, ή ένα πεδίο που λείπει, δεν σημαίνει ότι το stream είναι κενό. Η τιμή δείχνει μόνο ότι το FFmpeg δεν έθεσε καμία μέτρηση σε αυτό το πεδίο.

Από πού προέρχεται η τιμή

Η τιμή NB Frames συνήθως προέρχεται από την ίδια τη δομή του αρχείου, ώστε το FFmpeg να μην χρειάζεται να μετρήσει τα καρέ. Η προέλευση εξαρτάται από τη μορφή:

  • MP4 και MOV: το FFmpeg αθροίζει τις μετρήσεις δειγμάτων στον πίνακα time-to-sample, που είναι το atom stts.
  • AVI: το FFmpeg διαβάζει έναν 32-bit αριθμό από την κεφαλίδα του stream, που είναι το chunk strh.
  • AIFF: το FFmpeg διαβάζει το πεδίο numSampleFrames από το Common Chunk.
  • WAV, MP3, FLAC και MKV: οι αναγνώστες του FFmpeg για αυτές τις μορφές δεν ορίζουν την τιμή, επομένως η προεπιλεγμένη έξοδος του ffprobe εμφανίζει N/A.

Ένα αρχείο MKV μπορεί παρ' όλα αυτά να περιέχει μια μέτρηση με άλλο όνομα. Το πρόγραμμα mkvmerge γράφει μια ετικέτα με όνομα NUMBER_OF_FRAMES για κάθε track.

Πώς να μετρήσετε τα frames

Το NB Frames απλώς επαναλαμβάνει τον αριθμό που υπάρχει στη δομή του αρχείου. Αυτός ο αριθμός δεν αποδεικνύει ότι όλα τα καρέ βρίσκονται πράγματι στο αρχείο. Ένα MOV test file στο FFmpeg αποθηκεύει μια μέτρηση 708, αλλά το ffprobe διαβάζει μόνο 66 packets και 65 frames από αυτό το αρχείο.

Για να μετρήσετε τα καρέ, εκτελέστε το ffprobe με τις επιλογές -show_streams και -count_frames. Το πρόγραμμα ffprobe στη συνέχεια αποκωδικοποιεί το stream και αναφέρει το αποτέλεσμα σε ξεχωριστό πεδίο, το nb_read_frames. Αυτή η διαδικασία απαιτεί περισσότερο χρόνο, επειδή το ffprobe πρέπει να αποκωδικοποιήσει κάθε frame.

Χρησιμοποιήστε αυτόν τον έλεγχο για video streams. Σε ένα αρχείο AIFF, το ffprobe μετρά αποκωδικοποιημένα blocks που το καθένα περιέχει πολλά sample frames, επομένως οι δύο αριθμοί διαφέρουν ακόμα και σε ένα πλήρες αρχείο.

Η επιλογή -count_packets, επίσης σε συνδυασμό με -show_streams, μετρά packets χωρίς να τα αποκωδικοποιεί και αναφέρει το αποτέλεσμα στο nb_read_packets. Ένα video packet συνήθως περιέχει ένα συμπιεσμένο frame, αλλά ένα audio packet μπορεί να περιέχει αρκετά.

Γιατί έχει σημασία

Για ένα video stream, ο αριθμός καρέ και η διάρκεια μαζί δίνουν τον μέσο ρυθμό καρέ. Ο αναγνώστης MP4 και MOV του FFmpeg υπολογίζει τον ρυθμό από τον αριθμό καρέ και τη διάρκεια. Στο ίδιο test file, 708 καρέ σε 23,613333 δευτερόλεπτα δίνουν περίπου 29,98 καρέ ανά δευτερόλεπτο.

Η μέτρηση σάς βοηθά επίσης να ελέγξετε ένα αρχείο βίντεο. Αν μια μετρημένη τιμή είναι πολύ χαμηλότερη από την αποθηκευμένη τιμή, μπορεί να λείπει μέρος των δεδομένων βίντεο.

Meta Keys