Selalu ada sesuatu untuk diberitahukan kepada pengembang berbahasa Rusia: untuk berbagi pengalaman dan pendapat unik. Tetapi dalam format blog video, karena kompleksitas rekaman yang tinggi, hanya sedikit yang melakukannya sekarang.
Di bawah kucing, ia berbicara tentang jalannya yang sulit untuk merekam dan mengedit video menggunakan perangkat lunak gratis, skrip Ruby dan alat improvisasi.
Teori
Saya mulai dengan mempelajari teori merekam blog video di video YouTube berbahasa Inggris. Dan dari materi berbahasa Rusia, kursus ini ternyata sangat berguna (khususnya, modul blogging video dan video pertama tentang membangun bingkai dari modul pelaporan). Saya juga dengan lancar membiasakan diri dengan fitur populer editor video berpemilik untuk lebih secara sadar mendekati pilihan editor gratis.
Saya tidak berani berinvestasi dalam cahaya: tidak ada cukup waktu untuk mempelajarinya dan mencari opsi terbaik, dan studi yang dangkal tentang opsi murah berbicara tentang garu potensial seperti flicker dan rendering warna yang buruk. Dengan siang hari, saya tidak memiliki kesulitan besar, cukup hanya untuk video pendek.
Editor video
Alat edit video gratis yang ada berisi sejumlah masalah yang diketahui: dari solusi yang gagal di UI dan membeku yang mengubah pengeditan menjadi tak terbatas, hingga kebocoran memori, kerusakan, dan artefak tak terduga yang muncul hanya setelah rendering akhir.
Ada banyak masalah dan butuh waktu untuk memilih editor video dan mempelajari bug-nya, hanya untuk belajar bagaimana mengatasi hal-hal dasar. Akhirnya, dia berhenti di Pitivi , hanya karena dia menghabiskan begitu banyak waktu untuk mencari dan bereksperimen.
Suara dari Flatpak
Metode pemasangan yang didukung untuk Pitivi memerlukan Flatpak. Untuk sementara aku mengitarinya, karena Saya tidak memiliki systemd dan PulseAudio di sistem saya.
Ternyata systemd tidak diperlukan untuk waktu yang lama. Nah, PulseAudio - Saya harus menginstal dan mengkonfigurasinya lebih mudah untuk memodifikasi Flatpak . Tetapi akan lebih tepat untuk menempatkan PulseAudio, itu hanya sedikit membosankan dan tidak jelas apakah akan mengharapkan dari itu masalah dengan rekaman suara pada perangkat keras yang ada atau tidak.
Instal Pitivi, hapus konfigurasi PulseAudio, jalankan:
$ sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo $ sudo flatpak install flathub org.pitivi.Pitivi $ sudo find {/var/lib,~/.local/share}/flatpak/runtime -type f -name '*pulseaudio*.conf' -delete $ flatpak run --device=alsa --branch=stable --arch=x86_64 --command=pitivi org.pitivi.Pitivi
Tidak ada suara. Mari kita coba menjalankan sesuatu yang lebih sederhana, misalnya aplay
:
$ sudo find /var/lib/flatpak/app/org.pitivi.Pitivi/x86_64 -type d -path '*/files/bin' -exec cp `which aplay` {} \; $ flatpak run --device=alsa --branch=stable --arch=x86_64 --command=aplay org.pitivi.Pitivi /dev/urandom ALSA lib dlmisc.c:162:(snd_dlsym_verify) unable to verify version for symbol _snd_pcm_empty_open ALSA lib dlmisc.c:283:(snd1_dlobj_cache_get) symbol _snd_pcm_empty_open is not defined inside [builtin] aplay: main:828: audio open error: No such device or address
Mungkin alsa-lib
termasuk dalam Flatpak dikompilasi dengan --dengan --with-versioned
. Perbaikan cepat adalah mengganti libasound.so
sistem:
$ sudo find /var/lib/flatpak -type f -name libasound.so.2.0.0 -exec cp /usr/lib64/libasound.so.2.0.0 {} \; $ find ~/.local/share/flatpak -type f -name libasound.so.2.0.0 -exec cp /usr/lib64/libasound.so.2.0.0 {} \;
Bagi saya, ini tidak cukup:
$ flatpak run --device=alsa --branch=stable --arch=x86_64 --command=aplay org.pitivi.Pitivi /dev/urandom ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.6-r1/work/alsa-lib-1.1.6/src/pcm/pcm_direct.c:1943:(snd1_pcm_direct_parse_open_conf) The field ipc_gid must be a valid group (create group audio) aplay: main:828: audio open error: Invalid argument
Perlu konfigurasi ALSA lain:
$ sudo find /var/lib/flatpak -type d -name etc -exec cp /etc/asound.conf {} \; $ find ~/.local/share/flatpak -type d -name etc -exec cp /etc/asound.conf {} \;
Akhirnya, Anda bisa menggunakan Pitivi.
Pengaturan render untuk Pitivi yang datang sebagai hasilnya- format wadah: MP4
- video
- codec x264enc
- lanjut
- encoding pass / type: quantizer konstan
- quantizer konstan: 18
- bitrate: 16384 kbit / s
- preset kualitas kecepatan: ultrafast
- preset tala psikovisual: film
- audio
- dengan risiko dan ketakutan saya sendiri, saya menggunakan "Jangan render dari file proxy"
- yang lainnya adalah default
Efek lainnya
Saya melakukan beberapa efek animasi untuk teks menggunakan screencast dari halaman layar penuh, ditata menggunakan express.js dan animate.css. Dalam mengungkapkan.js untuk beberapa slide saya menambahkan suara transisi:
<section style="font-size: 5em"> <audio data-autoplay src="/path/to/sound.wav"></audio> #1 </section>
Ternyata menjadi penting untuk merekam screencast dengan 60 FPS jika teksnya sangat besar. Screencast melakukan ini:
Dalam kasus saya, shared_input_loopback
adalah perangkat dari konfigurasi asound.conf .
Pengaya ini lebih dari ffmpeg
untuk transisi antara klip, berguna.
Rekaman video
Di tangan ada telepon Meizu MX4, di mana saya memutuskan untuk menggunakan kamera depan dan merekam menggunakan Open Camera. Butuh waktu untuk melatih diri Anda untuk melihat kamera dan mengontrol posisi Anda di ruang tanpa membuat kesalahan khas, seperti memotong kepala Anda. Pada saat yang sama, bicaralah dengan cukup jelas, keras, menggerakkan tangan dan menghasilkan setidaknya beberapa jenis ekspresi wajah. Tapi itu baru permulaan.
Apa yang mendorong saya untuk melakukan pemotongan video otomatis, dan bahkan pada tahap perekaman?
- Rem dan bug Pitivi saat mengedit, terutama saat menggunakan alat Ripple Move / Edit , yang mengarah pada kebutuhan untuk me-restart Pitivi secara berkala.
- Bagi saya, proses memotong video secara manual adalah salah satu hal yang paling membosankan. Jelas bahwa sangat tidak mungkin untuk mengotomatisasi sepenuhnya (setidaknya tanpa skenario di mana jeda yang diperlukan untuk memahami apa yang dikatakan tidak ditunjukkan secara eksplisit), tetapi setidaknya proses ini dapat dioptimalkan.
Berikut adalah persyaratan untuk sepeda masa depan yang saya atur sendiri:
- Rekam video menggunakan ponsel Android, dan audio menggunakan laptop.
- Kontrol fokus kamera.
- Kemampuan untuk berhenti merekam untuk menyimpan atau menghapus fragmen yang terakhir direkam.
- Unduh video dari ponsel melalui USB, dengan upaya berulang dan lanjutkan , tanpa menghalangi kemampuan untuk merekam fragmen berikutnya.
- Sinkronisasi suara.
- Menentukan keberadaan suara dan melempar jeda.
- Kemampuan untuk memutar klip video yang terakhir direkam dengan cepat, dengan jeda yang sudah dijeda.
Mengapa begitu banyak kendali atas perangkat selama fase perekaman? Mengapa tidak mulai merekam selama beberapa jam berturut-turut, dan kemudian mengeditnya? Ada banyak alasan:
- Banal kekurangan ruang disk.
- Kecenderungan ponsel terlalu panas dan keluar dengan cepat selama rekaman panjang.
- Kerusakan layar sentuh karena ponsel berada di dalam air. Tapi entah bagaimana Anda perlu mengendalikan fokus. Ya, dan pers selanjutnya akan membuat getaran perangkat yang tidak perlu.
- Masalah mengunggah file besar karena daya port USB yang buruk di laptop saya. Secara teori, ini bisa diselesaikan menggunakan hub USB dengan daya tambahan. Menggunakan jaringan terlalu lambat.
- Keinginan untuk dengan cepat meninjau fragmen yang terakhir direkam untuk memastikan tidak ada kesalahan dan dengan cepat menulis ulang sebelum planet berubah di tempat yang salah di depan matahari.
- Keinginan untuk melempar duplikat yang buruk jelas sedini mungkin agar tidak membuang waktu dan ruang disk pada mereka di masa depan.
- Perlu menyinkronkan audio panjang yang direkam melalui telepon dan laptop. Hal ini dapat menyebabkan ketidaksesuaian dengan video karena fakta bahwa bingkai aliran audio dikeluarkan saat merekam dari laptop atau ketika merekam dari telepon (yang mungkin dapat Anda pecahkan, tetapi tidak mau mengambil risiko dan membuang waktu untuk bereksperimen). Lebih mudah untuk menyinkronkan fragmen kecil secara terpisah, maka desync yang mungkin tidak akan terlihat.
- Kebutuhan untuk menangani situasi di mana Open Camera memulai ulang perekaman karena ukuran video sebesar 4 GiB. Anda mungkin harus memodifikasi Open Camera. Jika pembatasan pada 4 GiB ini tidak dapat dihapus atau ditingkatkan, Anda harus mengadakan acara di laptop untuk mengetahui bahwa rekaman telah dimulai kembali di tempat ini.
Lebih mudah untuk merekam dalam fragmen kecil dan membuat otomatisasi primitif dari segala sesuatu yang mungkin. Ruby dipilih sebagai bahasa utama untuk mengembangkan sepeda. Faktanya, sekarang saya mungkin akan memilih Python, tetapi pada saat itu saya baru belajar Ruby, dan saya sedang menjalankan bahasa baru untuk saya dalam eksperimen aneh semacam itu.
Pengiris video otomatis
Informasi tentang jaringan pada topik ini tidak terlalu banyak. Tentang penelitian Stanford dan Adobe kemudian diingat (yang tidak menakutkan, saya masih membutuhkan solusi yang kurang canggih).
Irisan terjadi dalam 2 tahap: pada tahap perekaman - kasar, pada tahap rendering - lebih akurat, dengan kemampuan untuk mengoreksi fragmen yang terlalu banyak dipangkas secara manual. Diimplementasikan kasar menggunakan VAD dari WebRTC. Lebih akurat - dengan bantuan Google Speech (lebih khusus - dengan bantuan modifikasi proyek autosub , untuk menghasilkan subtitle untuk video). Saya yakin akan ada solusi yang lebih sukses, itu ternyata yang terbaik dari apa yang kami berhasil lakukan dengan cepat.
Jika Anda ingin mengembangkan sesuatu seperti ini menggunakan ffmpeg
, tetap berpegang pada prinsip tidak mencoba melakukan terlalu banyak dalam satu panggilan ke ffmpeg
. Buat file perantara dan kendalikan setiap langkah sehingga Anda tidak perlu mencari bug non-google yang aneh, seperti memotong yang salah atau efek yang tidak diterapkan.
Saya memulai aib yang dihasilkan entah bagaimana seperti ini:
$ bin/vlog-recorder \ --project /path/to/project \ --debug true \ --sound-settings ' --device=usb_card --format=dat' # arecord r - (RE)START recording s - STOP and SAVE current clip S - STOP and SAVE current clip, don't use auto trimming d - STOP and DELETE current clip p - PLAY last saved clip f - FOCUS camera on center h - show HELP q / Ctrl+C - QUIT [ stopped ] [ battery: 100% / 36ยฐC ]
Saya perlu argumen untuk arecord
untuk secara eksplisit menunjukkan perangkat untuk menghindari gangguan periodik yang paling mungkin karena plugin dsnoop berbasis ALSA. Anda juga dapat membuka log untuk mengontrol proses mengunduh file dari ponsel: tail -f /path/to/project/log.txt
.
Dengan cepat dirender dalam satu video untuk pratinjau, Anda dapat melakukan ini:
$ bin/vlog-render \ --project /path/to/project \ --language ru \ --video-filters 'hqdn3d,hflip,curves=psfile=/path/to/curves.acv,vignette' \ --speed 1.3 \ --fps 60 \ --preview true
Argumen --video-filters
adalah filter yang diteruskan ke ffmpeg
. Video akan secara otomatis terbuka di pemutar mpv
.
Anda juga dapat menukar atau membuang duplikat yang tidak perlu yang tersisa dengan mengedit file /path/to/project/render.conf
muncul, yang dapat dideteksi berkat suara yang dikenali. Ngomong-ngomong, idenya bukanlah hal baru . Di sana Anda dapat mempercepat setiap fragmen dan mengedit potongan video yang gagal, jika ada. Lain kali vlog-render
membaca kembali render.conf
dan menerapkan perubahan.
Untuk menyiapkan fragmen untuk editor video, Anda perlu menentukan --preview false
. Selain fragmen yang terletak pada output
, ia akan menggabungkannya menjadi satu file output.mp4
, karena pada awalnya saya tidak yakin:
- apakah saya akan menggunakan klip kecil di pitivi
- atau unggah satu video panjang untuk memotong lebih lanjut (sehingga Anda dapat menerapkan sejumlah efek ke "grup" klip).
Saya terutama menggunakan opsi pertama. Yang kedua berguna dalam satu video dengan cahaya redup: di sana saya hanya menggunakan sepotong output.mp4
. Untuk opsi kedua, skrip vlog-play-segments
juga bisa bermanfaat: dengan itu Anda dapat dengan cepat melihat semua jeda di antara klip dalam urutan durasi yang menurun. Ini akan membantu render.conf
secara lebih akurat dan menghemat waktu nanti saat mengedit video panjang ini di Pitivi.
Klip kecil yang dihasilkan dapat diunduh satu kali per timeline di Pitivi: pilih semua klip yang diimpor dan seret menggunakan drag-n-drop.
Mount telepon
Saya tidak ingin mencari dudukan telepon yang cocok, dan tangan saya sudah menggaruk wajah saya untuk merekam setidaknya sesuatu. Kami mengambil selembar kardus yang datang ke tangan dan memotong dudukan telepon untuk kebutuhan kita:
Dudukan dipasang pada layar laptop untuk meminimalkan jarak antara skrip dan kamera.
Rekaman suara
Suara yang dapat diterima sangat kritis . Di tangan adalah mikrofon Boya BY-M1. Meskipun diiklankan sebagai mikrofon omnidirectional, dalam praktiknya suara yang baik diperoleh hanya ketika Anda menggunakannya sebagai searah.
Bahkan lebih mudah untuk membuat mikrofon berdiri: kami mengambil sebotol jus delima yang datang ke tangan, gulungan selotip dan menempatkan konstruktor ini bersama-sama:
Anda juga dapat meletakkan handuk di bawah desain ini untuk menekan bagian dari getaran dari meja dan pada saat yang sama menyesuaikan ketinggiannya.
Kartu suara
Dalam kasus saya, ini adalah ASUS Xonar U3. Namun ternyata, itu tidak kompatibel dengan mikrofon seperti itu: mikrofon memiliki steker CTIA yang dirancang untuk ponsel. Masalahnya dipecahkan oleh adaptor di colokan TRS untuk mikrofon dan headphone. Dan menemukan itu tidak mudah: produsen adapter seperti itu jarang menulis detail. Dalam kasus saya, Cablexpert CCA-418W membantu.
Masalah lain dengan kartu ini adalah dalam offset DC di saluran yang tepat saat merekam. Yang tidak mengganggu, karena Saya tetap merekam dalam mono. Dan untuk perangkat lunak yang tidak memungkinkan Anda mengatur mono, saya mengalihkan saluran yang baik ke saluran yang buruk menggunakan ALSA.
Kartu ini juga takut terlalu panas. Anda harus menjauhkannya dari pendingin, jika tidak akan memperlambat dan merekam suara dalam sentakan.
Pemrosesan suara
Saya mengedit suara di headphone (dalam kasus saya itu adalah Pioneer SE-M390), dengan volume yang lebih tinggi daripada yang biasanya saya dengarkan musik. Algoritme adalah sesuatu seperti ini:
- Menggunakan Pitivi, saya membuat suara secara terpisah (menggunakan semua ALAC dan MP4 yang sama). Seringkali saya membuat beberapa trek terpisah, memilih lapisan tertentu di Pitivi dan menghapus sementara yang tidak perlu.
- Jika file yang diterima segera diunggah ke Audacity, kami akan kehilangan peregangan / kompresi aliran audio, yang kemudian dapat menyebabkan video dan audio tidak sinkron. Yang tidak jelas, ini tidak terjadi pada semua video. Untuk mencegah hal ini terjadi - cukup terapkan peregangan / kompresi ini:
ffmpeg -async 1 -i input.mp4 output.flac
- Unduh semua trek di Audacity. Tambahkan musik latar jika perlu.
- Untuk semua trek, atur volume yang diinginkan menggunakan Gain.
- Untuk melacak dengan suara, terapkan efek Noise Reduction (dalam kasus saya ganda), Kompresor dan Pemerataan sesuai dengan tips dari video ini .
- Kami menyamakan dan meningkatkan volume trek dengan suara. Salah satu cara klasik adalah Normalisasi, Amplifikasi, Limiter, dan Normalisasi lagi, tetapi dengan pendekatan ini saya belum bisa mendapatkan kualitas suara yang diinginkan.
Saya bertindak sementara seperti ini: pertama saya membuat Gain dari seluruh trek sehingga bagian paling keras terdengar tanpa kelebihan, dan kemudian saya secara manual menerapkan Amplify untuk setiap fragmen. Pembaruan : Cara ampuh lainnya adalah RMS Normalize, Limiter, dan Normalalize normal. Pengaturan Normalisasi dan Pembatas RMS dapat diambil dari sini . Namun demikian, metode ini tidak berguna bagi saya, karena Lagi pula, saya memutuskan untuk beralih ke mikrofon lain (Zoom H1n) dengan built-in Limiter, yang cocok untuk saya (jadi dengan mikrofon baru saya kemungkinan besar hanya harus melakukan Normalisasi normal, alih-alih semua hal ini). - Mikrofon terkadang merekam suara dengan beberapa cacat yang terlihat seperti klik. Mereka dapat dihapus menggunakan efek alat multi Spectral edit. Paling sering perlu menerapkannya beberapa kali berturut-turut untuk area yang dipilih, menggunakan Ctrl + R. Pembaruan : berkat mikrofon baru, saya menemukan bahwa cacat ini terhubung dengan sesuatu yang eksternal, kemungkinan besar ini adalah kombinasi dari kebisingan di mulut dan suara asing lainnya.
- Kami mengekspor dari Audacity ke FLAC dan menggabungkan semuanya menjadi satu file:
ffmpeg -i sound.flac -an -i video.mp4 -c copy output.mkv
- Setidaknya video pertama yang saya uji pada volume dan perangkat yang berbeda.
Hasil
Mengambil kesempatan untuk melonggarkan masalah dalam aturan, saya mengundang Anda untuk mengunjungi saluran YouTube yang dihasilkan, di mana saya berbagi wawasan tentang studi yang efektif tentang pemrograman dan disiplin ilmu terkait.
Semoga sukses dalam mengembangkan program dan membuat blog video!
Pembaruan : menerjemahkan artikel ini untuk blog berbahasa Inggris-nya.