Apakah hanya ada beberapa frame rate video standar?

11

Dalam video digital modern, dapatkah file video ditandai dengan frame rate yang sewenang-wenang? Atau hanya beberapa frame rate spesifik yang didukung secara luas? Dengan "modern", yang saya maksud adalah pemain perangkat lunak seperti Quicktime, VLC, Roku, konsol game, dll. Saya ingin tahu apa yang menurut standar video itu sendiri diizinkan frame rate dan kemudian apa yang sebenarnya berhasil dalam praktiknya.

Saya mengerti bahwa 24 fps, 25 fps, 30 fps, 50 fps, dan 60 fps adalah standar yang didukung secara luas. HandBrake juga menawarkan 5, 10, dan 15; apakah itu opsi standar? Bisakah saya menggunakan nomor FPS yang saya inginkan? Dan bagaimana dengan tarif non-integer seperti 23.976 dan 29.97; apakah mereka diperlakukan berbeda oleh perangkat lunak daripada 24 dan 30? Juga saya melihat referensi untuk "frame rate rate" di aliran H.264; apakah itu benar-benar berfungsi dan jika demikian, apa yang menggunakannya?

Pertanyaan spesifik saya adalah apa cara terbaik untuk mengkodekan beberapa scan film 8mm. Sumbernya 16 fps, standar film 8mm. Saat ini saya sedang menggandakan setiap frame lain untuk membuatnya hingga 24 fps yang berfungsi dengan baik, tapi saya bertanya-tanya mengapa saya tidak bisa hanya menandai video sebagai 16 fps. FWIW Saya telah menghasilkan file H.264 mp4 dengan Handbrake pada 15 fps dan menemukan mereka hanya diputar dengan benar di VLC. Mac Quicktime memainkannya terlalu cepat, mungkin 24 fps.

Nelson
sumber

Jawaban:

11

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 mpdecimateuntuk menjatuhkan frame dekat-dup. Gunakan -vsync 2jika 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 16fpsuntuk 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.

Peter Cordes
sumber
2

Untuk menjawab pertanyaan Anda - ya, Anda biasanya dapat menyandikan file video dalam frame rate apa pun yang Anda inginkan. (Meskipun beberapa perangkat lunak mungkin memilih untuk membatasi Anda untuk membuat perangkat lunak lebih sederhana.) Pertanyaannya adalah apakah format pengiriman yang Anda pilih mendukungnya, dan apakah perangkat pemutaran mendukungnya?

Jika Anda memiliki film 8mm pada 16 fps, saya akan menyandikannya pada 16 fps jika saya tahu perangkat pemutaran yang ingin saya dukung dapat menanganinya. Jika tidak, saya mungkin akan menggunakan perangkat lunak yang mendukung aliran optik (kadang-kadang disebut estimasi gerakan) untuk mengkodekannya pada 24 fps, yang kemungkinan frame rate terdekat kemungkinan akan didukung oleh perangkat lunak pengodean, perangkat lunak pengodean ulang kode, dan sebagian besar perangkat keras pemutaran.

Perangkat lunak (atau perangkat keras) yang mendukung aliran optik akan menghasilkan bingkai di antaranya berdasarkan gerakan objek dalam video Anda. Alih-alih mengulang frame atau bahkan memadukan 2 frame, itu menghasilkan frame baru yang biasanya cukup dekat dengan apa yang sebenarnya telah direkam seandainya Anda merekam pada frame rate output.

pengguna1118321
sumber
Saya akan mengkodekan pada frame rate asli, untuk menghindari membuang informasi apa pun, atau menduplikasi bingkai apa pun untuk membuat pekerjaan tambahan untuk codec. Juga, di masa depan kita semua berharap memiliki tampilan freesync yang dapat memainkan framerate apa pun. Jika tidak, konversi laju mungkin paling baik dilakukan pada waktu pemutaran, khususnya. jika kita berbicara tentang rentang waktu arsip.
Peter Cordes
2

Menurut sejarah, 24 FPS berasal dari kino (film). Film ini dalam bentuk foto dan kecepatan dipilih untuk membuat gerakan halus.

25 FPS berasal dari frekuensi daya di Eropa, 50 Hz (50 FPS dari sumber yang sama, tetapi sebenarnya dua kali lipat). Sebenarnya TV di Eropa adalah 50 FPS tetapi setengah frame, mereka interlaced

30 FPS berasal dari frekuensi daya di AS, 60 Hz (60 FPS berasal dari sumber yang sama, tetapi sebenarnya berlipat ganda). Sebenarnya TV di AS adalah 60 FPS tetapi setengah frame, mereka interlaced

16 FPS tidak begitu luas sebagai standar untuk tujuan profesional, jadi mungkin itulah alasannya tidak digunakan di sebagian besar perangkat lunak saat ini. Apalagi FPS semacam itu tidak akan "melicinkan" pergerakan yang cukup cepat. Saya punya satu ide gila bagaimana Anda bisa membuat 16 FPS agar cocok dengan 24. Juts mendapatkan setiap frame genap dan ganjil dan membuat sesuatu seperti rata-rata di antara mereka :)

Romeo Ninov
sumber
Terima kasih atas bantuannya tetapi tidak menjawab pertanyaan saya. Saya sadar akan asal usul 24, 25, 50, dan 60. Yang saya tanyakan adalah apakah framerate lain diharapkan bekerja.
Nelson
1

Ada beberapa standar video televisi dan film yang sesuai dengan kebanyakan video. Komputer sering dapat menampilkan video dari beberapa framerate, namun beberapa TV mungkin mengalami masalah dengan frame rate bola-aneh karena mereka mungkin menggunakan sirkuit tampilan yang lebih khusus. Bahkan pada komputer, kecepatan bingkai yang sebenarnya ditampilkan mungkin tidak cocok dengan kecepatan file video, tergantung pada kecepatan refresh monitor yang didukung.

Ya, frame rate non-integer ditampilkan secara berbeda. Mereka dikenal sebagai drop frame dan mereka ada terutama karena alasan warisan. Saat diputar ulang, satu frame dijatuhkan (dari kode waktu) sesering mungkin untuk mengimbangi perbedaan waktu dan frame tersebar pada kecepatan yang tepat agar tetap mulus. Ini lebih berkaitan dengan hal-hal sinkronisasi dalam format lawas dan mencegah masalah sinkronisasi yang tidak lagi relevan.

Anda dapat menggunakan frame rate yang tidak standar dan harus diputar dengan baik di PC tetapi tidak akan sesuai dengan video standar untuk hal-hal seperti Bluray dan mungkin tidak dapat diputar dengan baik di beberapa TV. (Dan bahkan pada yang berfungsi, kemungkinan akan melakukan pull-down secara real time untuk menyesuaikan dengan frame rate standar, di mana saat pull-down dilakukan sebelumnya akan menghasilkan kualitas yang lebih baik.)

AJ Henderson
sumber
@ user1118321 ya, dan terima kasih telah menunjukkan ini bisa lebih jelas.
AJ Henderson
-1

Pertanyaan Anda bukan tentang tarif umum, ini tentang berapa tarif yang harus Anda gunakan untuk mendigitalkan film Anda. Jawabannya: Anda harus menggunakan kurs asli jika memungkinkan, karena Anda ingin mempertahankan sumber dalam bentuk digital. Kemudian Anda dapat mengonversinya ke frame rate apa pun yang Anda butuhkan untuk dilihat. Di masa lalu biasanya berarti 24fps untuk presentasi teater dan 29,97fps, interlaced untuk video. Saat ini Anda dapat melakukan hampir semua hal, tetapi Anda harus memiliki sumber yang baik, yang cocok dengan aslinya sejelas mungkin.

Rusty Core
sumber
Tidak, pertanyaan saya adalah tentang harga umum. Dan dijawab cukup tahun yang lalu.
Nelson
-3

Beberapa catatan lainnya. Pertama, 48 fps menjadi lebih populer dan umum berkat The Hobbit dan sekarang dukungan YouTube untuk framerate. Kedua, 30 fps biasanya sebenarnya 29,97 fps dan 60 biasanya sekitar 59,94.

KC McLaughlin
sumber
2
Sebenarnya, 30 tidak selalu berarti 29,97. Kadang-kadang benar-benar 30. Sama berlaku untuk 24. 23,98, 24, 29,97, 30, 50, 59,94, dan 60 semuanya valid, framerate yang umum digunakan. Yang dengan desimal di dalamnya dimaksudkan agar kompatibel dengan siaran televisi di berbagai negara, tetapi mereka juga merupakan permainan yang adil bagi para intweb. Namun, beberapa produsen kamera video "berbohong" tentang framerate mereka. Sebuah kamera bertanda 24p mungkin benar-benar menghadirkan 23,98 dalam upaya untuk menghindarkan konsumen dari sakit kepala masalah pita dan detail teknis di belakangnya.
Jason Conrad
@JasonConrad Frame rate tidak selalu bulat desimal, tetapi untuk sebagian besar kamera konsumen.
KC McLaughlin
@KCMcLaughlin - sebenarnya, ini menjadi semakin mungkin pada perangkat pemindaian progresif untuk menjatuhkan frame drop dan langsung naik tingkat frame integer. 29.97 dan 23.976 adalah murni warisan pada saat ini dan telah semakin digantikan dengan frame rate integer murni.
AJ Henderson
@KCMcLaughlin Color NTSC tidak pernah 29,97fps. Itu dan masih 30000/1001. Demikian pula, konten 24p yang ditransfer ke NTSC berwarna sebenarnya akan menjadi 24000/1001. Juga, kamera digital saya (lumix) merekam 30fps, bukan 30 / 1.001. A / V akan di-desync jika saya memutar jumlah frame yang berbeda per 48 sampel audio.
Peter Cordes