Tanpa unggah, 100% lokal, tanpa akun

Artikel

Mengekstrak bingkai video untuk thumbnail dan lembar kontak

Video adalah urutan gambar diam. Mengambil salah satu gambar tersebut menghasilkan thumbnail, cover, atau lembar kontak. Hasilnya lebih tajam dan lebih dapat diprediksi ketika Anda memahami cara codec video menyimpan bingkainya dan momen mana yang layak diambil.

Bingkai dan frame rate

File video adalah urutan gambar diam yang ditampilkan cukup cepat untuk menciptakan ilusi gerak. Jumlah gambar yang ditampilkan per detik adalah frame rate, dinyatakan dalam fps. Nilai umum adalah 24 fps untuk sinema, 25 fps untuk siaran PAL, 30 fps untuk video web, dan 60 fps untuk rekaman game. Pada 24 fps, film dua jam mengandung sekitar 172.800 bingkai individual. Setiap bingkai sesuai dengan satu momen dalam waktu; mengekstrak satu bingkai membekukan momen tersebut sebagai gambar mandiri. Frame rate juga menentukan berapa banyak bingkai yang Anda dapatkan per detik rekaman saat mengekstrak batch: pada 30 fps, mengambil setiap bingkai dari satu menit video menghasilkan 1.800 gambar, yang sering kali jauh lebih banyak dari yang Anda butuhkan. Mengekstrak pada frame rate yang lebih rendah, atau setiap bingkai ke-N dengan alat yang mendukungnya, adalah cara praktis untuk mengurangi volume tersebut sambil tetap mencakup durasi penuh.

Strip garis waktu yang menampilkan 24 bingkai individual per detik rekaman, dengan nomor bingkai dan timestamp yang terlihat di bawah setiap bingkai.

Keyframe vs bingkai terinterpolasi

Codec video modern tidak menyimpan setiap bingkai sebagai gambar lengkap. Mereka menggunakan tiga jenis bingkai untuk menghemat ruang. I-frame, juga disebut keyframe, adalah gambar lengkap dan mandiri. P-frame hanya menyimpan piksel yang berubah sejak I-frame atau P-frame terakhir. B-frame menyimpan perubahan relatif terhadap bingkai sebelumnya dan bingkai masa depan, memerlukan bingkai di kedua sisi untuk merekonstruksinya. Karena P-frame atau B-frame tidak lengkap sendiri, mendekoding satu memerlukan bingkai referensi di sekitarnya. Jika bingkai referensi tersebut mengandung blur gerak atau transisi, gambar yang direkonstruksi mewarisi blur tersebut. I-frame, sebaliknya, didekoding secara independen. Selalu tajam karena tidak meminjam apa pun dari tetangga. Saat mengekstrak bingkai untuk digunakan sebagai thumbnail, mendarat di I-frame memberikan hasil terbersih yang mungkin. Sebagian besar codec menempatkan I-frame pada potongan adegan, yang secara alami merupakan titik awal yang tajam.

Memilih momen yang tepat

Bahkan I-frame yang didekoding dengan baik dapat menghasilkan thumbnail yang buruk jika momen yang diambil tidak menarik. Beberapa faktor mengurangi kualitas thumbnail. Blur gerak terjadi ketika kamera atau subjek bergerak cepat selama eksposur bingkai; smear yang dihasilkan membuat bingkai terlihat lembut meskipun dekoding bersih. Bingkai transisi yang ditangkap di tengah dissolve atau mid-fade mengandung dua gambar yang tumpang tindih dan jarang berfungsi sebagai gambar mandiri. Bingkai yang kurang atau terlalu banyak terekspos, umum di awal adegan sebelum auto-eksposur stabil, kehilangan detail di bayangan atau sorotan. Bingkai thumbnail terbaik berasal dari momen aksi atau ekspresi yang jelas, pencahayaan yang baik, dan kamera yang stabil. Menggulir melalui video dengan pemutar yang menampilkan timestamp tepat memungkinkan Anda mengidentifikasi momen tersebut sebelum mengekstraknya. Bingkai yang terlihat baik saat dijeda di pemutar umumnya akan terlihat baik sebagai ekspor diam.

Pemutar video yang dijeda pada bingkai subjek yang terang, stabil, dan berada di tengah aksi, dengan timestamp yang ditampilkan di sudut.

Ekspor: resolusi, format, dan setiap bingkai ke-N

Saat mengekstrak bingkai, gambar yang diekspor harus sesuai dengan resolusi native video. Menskalakan ke atas menimbulkan artefak interpolasi; menskalakan ke bawah membuang piksel yang mungkin Anda inginkan. Video 1080p menghasilkan gambar 1920x1080 piksel, dan video 4K menghasilkan 3840x2160. Untuk format, PNG mempertahankan setiap piksel persis dan merupakan pilihan tepat saat Anda membutuhkan ketajaman maksimum untuk pengeditan atau penskalaan lebih lanjut. JPEG lebih kecil dan cocok untuk pratinjau atau berbagi, tetapi menimbulkan artefak kompresi di sekitar tepi tajam. Jika Anda membuat lembar kontak, kisi bingkai representatif kecil yang mencakup durasi penuh, mengekstrak pada frame rate tetap alih-alih mengambil setiap bingkai adalah pendekatan standar: meminta 1 bingkai per detik dari sumber 30 fps memberi Anda satu gambar per detik rekaman, dan laju yang lebih tinggi seperti 5 atau 10 fps memberi kumpulan yang lebih padat untuk pemeriksaan dekat. Laju yang tepat tergantung pada seberapa banyak detail yang Anda butuhkan versus berapa banyak gambar yang ingin Anda tangani.

Melakukannya secara lokal dengan video-extract-frames

Tool video-extract-frames di Sunasty mendekoding video Anda sepenuhnya di dalam browser menggunakan FFmpeg yang dikompilasi ke WebAssembly. Anda menjatuhkan file, memilih frame rate dari 1 hingga 30 bingkai per detik, memilih PNG atau JPEG, dan tool mendekoding bingkai pada laju tersebut di memori browser Anda dan menawarkan hasilnya sebagai unduhan tersendiri, dibatasi hingga 300 bingkai per proses. File video Anda tidak pernah meninggalkan perangkat Anda. Tidak ada byte yang dikirim ke server kapan pun selama proses berlangsung. Ini penting untuk rekaman yang mengandung konten pribadi atau sensitif: rekaman keluarga, wawancara, atau rekaman mentah sebelum pengeditan. Browser memuat video ke dalam sistem file virtual di RAM, menjalankan dekoding FFmpeg, dan mengembalikan gambar kepada Anda. Trade-offnya adalah bahwa dekoding dilakukan dalam perangkat lunak di CPU Anda daripada oleh perangkat keras khusus, sehingga video beresolusi tinggi yang panjang membutuhkan waktu lebih lama dari aplikasi native. Untuk mengekstrak beberapa bingkai atau membuat lembar kontak dari klip pendek, kecepatannya praktis.

Alat dalam artikel ini

Pertanyaan yang sering diajukan

Mengapa bingkai yang saya ekstrak terlihat buram?

Penyebab paling umum adalah mendarat di P-frame atau B-frame selama momen gerak. Bingkai-bingkai ini menyimpan perbedaan daripada gambar lengkap, dan blur gerak dalam rekaman sumber terbawa ke dalam dekoding. Coba ekstrak I-frame terdekat, yang sesuai dengan potongan adegan atau keyframe periodik, untuk hasil yang lebih tajam.

Haruskah saya mengekspor bingkai sebagai PNG atau JPEG?

PNG jika Anda berencana mengedit bingkai, menskalakan ke atas, atau menggunakannya dalam konteks di mana artefak kompresi akan terlihat. JPEG jika Anda membutuhkan file lebih kecil untuk berbagi cepat atau pratinjau dan pengurangan kualitas yang sedikit dapat diterima. Untuk thumbnail yang muncul pada ukuran kecil tetap, JPEG dengan pengaturan kualitas yang wajar biasanya sudah cukup.

Bagaimana cara membuat lembar kontak dari video?

Pilih frame rate yang cukup rendah untuk memberi Anda jumlah still yang bisa dikelola, alih-alih timestamp tunggal. Untuk klip dua menit, 1 bingkai per detik memberi Anda sekitar 120 bingkai, yang cukup padat untuk memilih kisi yang bagus; keluarannya tetap dibatasi hingga 300 bingkai per proses. Belum ada laju yang lebih kasar dari 1 fps hari ini, jadi untuk lembar yang lebih jarang, ekstrak pada 1 fps dan simpan hanya bingkai yang Anda inginkan untuk kisi akhir.