Tutorial FFMPEG Ke Video

Ffmpeg Images Video Tutorial



Oleh itu, anda berminat membina video berdasarkan gambar? Perisian perisian Linux dapat membantu anda dalam tugas itu, dan terutama sekali: ffmpeg.

Sekiranya anda belum mengetahuinya, ffmpeg adalah perisian yang melakukan penukaran dan penyuntingan video dan audio menggunakan penapis. Ini yang menyokong sebilangan besar codec yang berbeza. Sekiranya anda sudah menggunakan VLC, maka anda tahu sedikit ffmpeg: VLC menggunakan ffmpeg untuk menyahkod video sebanyak mungkin.







Tetapi sebelum membuat video, saya perlu memberitahu anda beberapa konsep supaya anda tidak tersesat.



Tidak terlalu sukar untuk menggabungkan gambar dalam video. Dan ada sebabnya: video berdasarkan rangkaian gambar. Biar saya jelaskan.



Video (walaupun video YouTube) adalah sekumpulan gambar pegun yang berubah dengan cepat. Di pawagam dan pawagam, di antara setiap gambar ada gambar hitam kerana mekanisme harus beralih bingkai dan terlalu lambat. Tetapi tidak dapat dilihat oleh mata manusia kerana mekanisme ini cukup pantas dan kerana ilusi optik.





Tetapi komputer tidak menghadapi masalah ini. Skrin LCD terus memaparkan gambar terakhir. Bagaimanapun, anda sebenarnya boleh mengekstrak gambar bebas dari setiap gambar video. Apabila gambar berasal dari video, ia dipanggil a kerangka . Itulah yang anda lihat semasa menjeda video - dan apabila anda melakukannya, wajah tidak kelihatan baik!

Secara amnya, video dari Amerika Syarikat mengandungi 30 bingkai sesaat - sedar sedikit. Ia 1.800 bingkai seminit, 54.000 bingkai setiap setengah jam video, atau 108,000 bingkai sejam . Itu banyak dan begitulah cara anda bertanya-tanya kadang-kadang bagaimana satu gambar boleh mempunyai berat 1 MiB tetapi satu minit video 1080p dapat berat hanya 15 MiB.



Jumlah gambar sesaat disebut sebagai kadar bingkai . Pada 30 bingkai sesaat, anda menukar gambar setiap 33 milisaat . Jadi secara konkrit, jika anda ingin membuat satu minit video berdasarkan gambar anda sahaja, anda perlu mempunyai 1.800 fail JPG atau PNG seminit.

Itu berguna jika anda ingin melakukan penyuntingan video lanjutan tanpa menggunakan alat video: anda hanya perlu membina gambar untuk setiap bingkai dengan kesan anda dan kemudian anda dapat menggabungkannya dalam video. Tetapi kadang-kadang anda mahu gambar pegun kekal kerana, anda mahu gambar pegun dalam video.

Baiklah, sekarang, masa untuk memasang ffmpeg.

Pasang ffmpeg di Linux

Bergantung pada pengedaran anda, pemasangan ffmpeg boleh dilakukan dengan mudah atau sedikit rumit . Ini adalah perisian percuma dengan kod sumber yang tersedia untuk umum, tetapi kerana ia dapat menyahkod atau mengekod format yang dipatenkan seperti MP4, beberapa pengedaran mengecualikannya dari repositori mereka. Sebagai contoh, dalam Red Hat Enterprise Linux, CentOS dan Fedora, anda memerlukan RPMFusion kerana paten. Lebih-lebih lagi, semua versi Debian dan Ubuntu sebelum 16.04 menyebarkan versi palsu ffmpeg berdasarkan garpu yang tidak sah.

Tetapi sebelum tergesa-gesa memasangnya, mungkin versi yang betul sudah dipasang? Mari kita uji:

$ffmpeg -perubahan
ffmpegversi X.XXXXXXXX Hak Cipta(c) 2000-2018pemaju FFmpeg

Sekiranya selepas hak cipta anda melihat pembangun FFmpeg, anda mempunyai versi asli FFMpeg, anda tidak perlu berbuat apa-apa. Walau bagaimanapun, jika anda melihat:

$ffmpeg -perubahan
ffmpegversi X.XXXXXXXX Hak Cipta(c) 2000-2018pemaju Libav

Maka itu bermaksud anda menggunakan garpu dari ffmpeg dipanggil Libav. Debian dan versi Ubuntu yang lebih lama secara senyap ganti FFMpeg dengan Libav. Sekiranya ia memberitahu bahawa ia tidak digunakan lagi, sila abaikan, itu mengelirukan. Sekiranya anda memasang garpu, inilah masanya untuk membuang versi ffmpeg palsu anda dan kemudian ikuti panduan di bawah untuk memasang versi yang betul. Mungkin seperti ini:

$sudo apt-get keluarkan ffmpeg

Jadi sekarang anda mungkin belum memasangnya atau anda mempunyai versi yang salah, masa untuk memasangnya!

Di Fedora, Red Hat Enterprise Linux (RHEL) dan CentOS, pergi ke https://rpmfusion.org/Konfigurasi dan aktifkan repositori RPMFusion percuma di komputer anda. Kemudian, jika anda berada di Fedora, lakukan:

$sudodnfpasang ffmpeg

Dan untuk CentOS & Red Hat Enterprise Linux, lakukan:

$sudo yum pasang ffmpeg

Itu semua untuk sistem berasaskan Fedora dan Red Hat, sudah dipasang.

Dalam semua versi Debian (dan semua derivatif) dan Ubuntu sebelum 16.04, anda perlu mendapatkan binaan statik FFMpeg dari laman web rasmi. Pergi ke https://ffmpeg.org/download.html#build-linux dan ke bawah Binaan Statik Linux , Klik pada 32-bit dan 64-bit untuk kernel 2.6.32 ke atas . Kemudian, di bawah pelepasan: X.X.X , muat turun arkib yang sesuai, ekstraknya dan anda boleh melancarkan eksekusi yang terdapat di folder yang diekstrak melalui CLI.

Bagi yang menggunakan Ubuntu 16.04 dan ke atas, lebih mudah, lakukan:

$sudo pasang-dapatkan ffmpeg

Phew! Akhirnya kita mesti selamat pergi! Sebelum meneruskan, uji terakhir kali dengan:

$ffmpeg -perubahan

ffmpeg versi X.XXXXXXXX Hak cipta (c) 2000-2018 pembangun FFmpeg

Buat video dari banyak gambar

Jadi, untuk contoh pertama kami, kami akan membuat video dari Imej di mana setiap gambar mewakili bingkai yang akan dipaparkan selama 33 milisaat. Izinkan saya menunjukkan kepada anda arahan terlebih dahulu.

** MP4 dan H.264 adalah codec yang dipatenkan, sila periksa sama ada anda mempunyai hak untuk menyandikannya. **

$ffmpeg-r: v30 -i 'Penguin -% 05d.png'-codec: v libx264-presetsangat perlahan
-pix_fmt yuv420p-krf 28 -an 'Penguins.mp4'

OK jadi bagaimana ia berfungsi? Untuk perintah ini berfungsi, anda perlu mempunyai banyak bingkai di mana setiap bingkai adalah fail seperti Penguins - 00043.png. Perintah ini kemudian akan menggabungkan semua bingkai mengikut urutan pada 30 FPS. Jadi, Penguins - 00043.png datang sebelum Penguins - 00044.png dalam video dan ffmpeg akan menghormatinya. Oleh itu, jika anda mempunyai 120 bingkai, video anda akan berdurasi 4 saat.

Terdapat beberapa syarat mengenai format, lebar dan tinggi agar bingkai berfungsi. Sekiranya anda tidak mematuhi peraturan ini, ffmpeg mungkin akan mengabaikan beberapa gambar atau membatalkan proses pembuatan video. Jadi:

  • Semua bingkai dalam video yang sama mesti berkongsi:
    • Lebar tinggi
    • Kedalaman warna
  • Bingkai hendaklah dalam ukuran video standard seperti:
    • 640 ✕ 360 (360 p)
    • 853 ✕ 480 (480 p)
    • 1280 ✕ 720 (720 p)
    • 1920 ✕ 1080 (1080p)
    • 4096 ✕ 2306 (4K)
  • Lebih suka bingkai dalam PNG daripada JPG
  • Elakkan ketelusan atau alpha dalam format PNG

Perintah kemudian akan memakan masa untuk menukar video, mengoptimumkan prestasinya dan menjadikan anda fail MP4 bernama Penguins.mp4.

Sekarang, anda mungkin mahu mempunyai gambar yang masih tinggal lebih dari 33 milisaat. Dalam kes ini, video anda lebih merupakan tayangan slaid dan bukan urusan yang sama. Untuk melakukannya, pertama-tama anda boleh memberikan framerate yang lebih perlahan untuk input dan kemudian memberitahu ffmpeg untuk menduplikasi bingkai dalam output. Tidak, YouTube dan Vimeo tidak akan sangat menghargai video 0.5 FPS walaupun anda menukar gambar anda setiap 2 saat.

Sebaiknya lakukannya:

$ffmpeg-r: v1/5 -i 'Penguin -% 05d.png'-r: v30-codec: v libx264-presetsangat perlahan
-pix_fmt yuv420p-krf 28 -an 'Penguins.mp4'

Di sana kita pergi! ffmpeg akan membuat setiap gambar anda muncul selama 5 saat tetapi dalam video 30 FPS. Jangan bimbang tentang peringatan bingkai pendua: itu yang anda mahukan.

Kesimpulannya

Sekarang, anda - Spielberg baru - dapat membuat video anda sendiri. Anda boleh melakukan tayangan slaid sederhana atau menyiapkan bingkai video dengan bingkai menggunakan penyunting gambar seperti GIMP, tetapi anda juga boleh mendapat manfaat daripada sekumpulan besar kesan dan codec yang anda dapati di ffmpeg.

Luangkan masa untuk bereksperimen sendiri - anda seorang artis - dan buat video yang akan menghasilkan berjuta-juta tontonan di YouTube!