Ada beberapa frame rate "standar", tetapi ada begitu banyak sehingga mendukung framerate sewenang-wenang lebih mudah daripada secara khusus mendukung banyak frame spesifik. Ini terutama berlaku untuk pemain perangkat lunak, seperti VLC.
Semakin banyak dukungan untuk VARIABEL fps. (VFR, laju bingkai variabel). Di sinilah interval antara frame dalam video yang sama tidak konstan. Banyak format file penampung video (seperti Matroska ( .mkv
) atau MPEG-4 ( .mp4
, terkait erat dengan Apple .mov
)) bahkan tidak menyimpan nomor FPS, melainkan basis waktu (mis. 1/30 detik), lalu setiap frame memiliki cap waktu sebagai kelipatan dari basis waktu itu. Kebetulan bahwa interval antara setiap frame adalah satu atau sejumlah kecil bilangan bulat dari basis waktu dalam video CFR (frame rate konstan).
Rekaman kamera keamanan dengan frame yang hampir duplikat jatuh akan menjadi kasus penggunaan yang jelas untuk VFR. Bahkan lebih jika dikompresi dengan codec video sederhana yang tidak mengambil keuntungan dari redundansi temporal (dengan frame antar (p dan b)). (bermain-main dengan ffmpeg -vf mpdecimate
untuk menjatuhkan frame dekat-dup. Gunakan -vsync 2
jika mengeluarkan ke mp4, karena untuk beberapa alasan itu bukan default untuk muxer itu, tetapi untuk mkv.)
Kasus lain adalah smartphone modern. Misalnya, Moto G (2nd gen) saudara saya merekam video VFR. Ini menurunkan kecepatan frame ketika sensor membutuhkan lebih banyak cahaya. Beberapa output dari menjalankan mediainfo pada mp4 yang dibuat oleh perangkat lunak ponsel, direkam di dalam ruangan:
Bit rate : 9 999 Kbps
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Rotation : 90°
Frame rate mode : Variable
Frame rate : 16.587 fps
Minimum frame rate : 14.985 fps
Maximum frame rate : 30.030 fps
Pemutaran video stream VFR tunggal tidak sulit. Perangkat lunak baru saja menyiapkan bingkai berikutnya untuk ditampilkan, tidur sampai harus ditampilkan, kemudian bangun dan menampilkannya.
Hal-hal menjadi sedikit lebih rumit ketika Anda mempertimbangkan fakta bahwa manusia hanya dapat melihat bingkai video ketika monitor menampilkannya. Monitor VFR ada, tetapi masih jarang. (google for g-sync freesync).
Mengubah gambar yang ditampilkan saat sedang dipindai ke monitor menghasilkan robekan video yang jelek (biasanya terlihat saat bermain game dengan vsync off). Ini membatasi pemain untuk mengubah gambar yang ditampilkan pada 50 atau 60Hz. (CRT mendukung kecepatan vrefresh sewenang-wenang, dalam kisaran, tetapi rumit untuk memasak mode dengan semua pengaturan waktu yang benar, sehingga kebanyakan orang hanya menggunakan beberapa kecepatan refresh tetap. Dan sekarang orang memiliki LCD yang hanya mendukung kecepatan refresh tetap. Hingga monitor freesync lebih luas pula. Saya sangat menantikan itu. :)
Jadi dengan laju bingkai video yang bukan kelipatan atau faktor laju penyegaran monitor, beberapa bingkai akan ditampilkan untuk 3 penyegaran monitor, dan beberapa untuk 2 penyegaran, misalnya, bahkan jika video dimaksudkan pada 25FPS konstan (pada monitor 60Hz).
Hal-hal menjadi lebih rumit ketika Anda ingin bekerja dengan beberapa klip dan memudar di antara mereka, atau gambar-dalam-gambar, atau berbagai efek lainnya. BANYAK lebih mudah untuk menulis perangkat lunak pengeditan video jika Anda dapat berasumsi bahwa semua klip memiliki bingkai baru pada saat yang sama. (Mereka memaksa penyelarasan klip untuk snap ke seluruh frame).
Inilah sebabnya mengapa NLE (seperti kdenlive atau pitivi, untuk memilih contoh perangkat lunak bebas secara acak), lebih cenderung memaksa Anda ke FPS tetap, dan menjatuhkan / menggandakan frame dari klip Anda untuk membuatnya cocok dengan frame rate itu. CFR yang Anda pilih bisa sewenang-wenang, tetapi biasanya harus konstan untuk seluruh "proyek".
(Apakah NLEs sepenuhnya berfungsi dengan klip VFR, dan menghasilkan output VFR dalam kasus itu?)
Jadi secara ringkas, begitu kita memiliki monitor dan OS-sinkronisasi variabel, satu-satunya hal yang menahan kita adalah mengedit video, saya kira. Dan penyiaran, karena tampaknya CFR adalah masalah besar untuk itu juga?
Jika Anda bertanya-tanya, 29.970 (sebenarnya 30000/1001) dan 23.976 (sebenarnya 24000/1001, dari telecining) tingkat frame non-integer yang mengganggu adalah kesalahan warna NTSC. cari 1,001 . Kalau saja mereka mau mengambil risiko beberapa set B&W tidak mampu menangani frekuensi 0,1% ekstra untuk subcarrier audio, dunia akan terhindar dari omong kosong ini. (Saya pikir saya melihat artikel lain di suatu tempat yang membuatnya terdengar seperti banyak set akan baik-baik saja, tetapi mereka tidak yakin tentang compat sempurna. Wikipedia membuatnya seperti tidak ada set akan menangani subcarrier audio 0,1% lebih tinggi. IDK the fakta.)
Frame rate yang mengganggu adalah salah satu dosa penyiaran yang lebih rendah. Ini benar-benar interlacing yang telah menjadi kutukan kualitas video pada layar modern (semua piksel menyala sekaligus), dan itu tidak akan berubah. Saya masih belum mengerti mengapa interlacing disimpan untuk HDTV. Mengapa 1080i60 didefinisikan, alih-alih menggunakan 720p60 untuk mendapatkan resolusi sementara yang sama untuk olahraga dan lainnya? Ini mirip dengan 1920x540p60, tetapi dengan offset vertikal bodoh antara bidang ganjil dan genap yang membutuhkan banyak perhitungan pada sisi penerima agar tidak terlihat mengerikan.
edit:
Untuk kasus penggunaan Anda, saya benar-benar menyarankan pengarsipan di FPS asli. Jangan membuang informasi apa pun dengan menjatuhkan bingkai. Jangan dup bingkai dan membuat file Anda lebih besar (atau membuat encoder h.264 Anda menghabiskan lebih banyak waktu memperhatikan duplikat dan mengeluarkan bingkai penuh dengan melewati macroblock yang hanya membutuhkan 20 byte untuk seluruh frame).
Di masa mendatang ketika kami semoga semua memiliki tampilan freesync yang dapat memainkan framerate apa pun, Anda ingin membatalkan pullup Anda menjadi 24fps sehingga video Anda diputar lebih lancar! Atau jika freesync entah bagaimana tidak menyala, atau tampilan yang muncul setelah LCD adalah CFR, maka konversi laju mungkin paling baik dilakukan pada waktu pemutaran. Ini tidak seperti 24fps bahkan diputar dengan sempurna pada monitor 60Hz. (Saya tidak melihat secara visual fakta bahwa beberapa frame ditampilkan untuk 3 * 1/60 sementara beberapa ditampilkan untuk 2 * 1/60, tetapi itu benar).
Jika Anda mengalami masalah dengan Quicktime, maka IDK. Mungkin pastikan Handbrake membuat file dengan framerate yang tepat di bitstream h.264, serta wadahnya. (Ya, h.264 tajuk tampaknya dapat menyimpan laju bingkai, terpisah dari apa yang dikatakan wadah. Lihat dokumen untuk mkvmerge --fix-bitstream-timing-information
. Dan coba gunakan dengan --default-duration 16fps
untuk membuat file mkv. Lalu mux yang kembali ke mp4 dan lihat apakah itu diperbaiki dengan cepat? ) Atau mungkin ada cara untuk melakukannya dengan alat mp4 di tempat pertama. Lihat misalnya: /ubuntu/370692/how-to-change-the-framerate-of-a-video-without-reencoding
Saya dapat menjamin bahwa frame rate mp4 sewenang-wenang valid, dan bahkan variabel framerate mp4 valid. Jika Quicktime salah memainkannya, itu bisa jadi kesalahan Quicktime. Atau mungkin kesalahan Handbrake karena membuat file salah. Saya biasanya hanya menggunakan ffmpeg secara langsung, karena saya seorang ninja baris perintah.