Siarkan video Anda di YouTube XNUMX/XNUMX

Akhir-akhir ini, sebagai hobi, saya merekam ceramah seorang psikolog yang saya kenal. Saya mengedit rekamannya dan mempublikasikannya di situs web saya. Sebulan yang lalu, saya mendapat ide untuk mengadakan siaran 24/7 ceramah ini di YouTube. Semacam “saluran TV” tematik yang didedikasikan untuk pertumbuhan pribadi.

Saya tahu cara membuat siaran reguler. Tapi bagaimana cara membuatnya menjadi file video yang disiarkan? Sehingga dapat berjalan 24/7, fleksibel, otonom mungkin, dan pada saat yang sama tidak bergantung pada komputer di rumah saya. Inilah yang harus saya cari tahu.

Siarkan video Anda di YouTube XNUMX/XNUMX

Butuh beberapa hari untuk menemukan solusinya. Saya mempelajari banyak forum dan berbagai manual yang tanpanya siaran saya tidak akan berhasil. Dan sekarang lelucon tersebut berhasil, saya merasa perlu membagikan solusi saya. Beginilah artikel ini muncul.

Singkatnya, solusi akhirnya adalah sebagai berikut: VPS + ffmeg + skrip bash. Di bawah potongan tersebut, saya menjelaskan langkah-langkah yang diambil dan berbicara tentang kendala yang ditemukan saat mengatur siaran.

Langkah 1 – dari mana siarannya berasal?

Pada awalnya, penting untuk memutuskan dari mana siaran itu berasal dan dari mana sumbernya. Hal pertama yang terlintas dalam pikiran adalah dari komputer di rumah Anda. Kumpulkan video ke dalam daftar putar dan mulai putar di pemutar video mana pun. Kemudian ambil gambar layar dan siarkan ke YouTube. Tapi saya segera menolak opsi ini karena... Untuk menerapkannya, Anda harus selalu menyalakan komputer di rumah, yang berarti kebisingan dari pendingin bahkan di malam hari dan peningkatan konsumsi listrik (+100-150 kWh setiap bulan). Dan ternyata Anda tidak akan bisa menggunakan komputer di rumah selama siaran. setiap gerakan mouse akan terlihat di siaran.

Lalu aku mulai melihat ke samping layanan awan. Saya sedang mencari layanan siap pakai di mana saya dapat mengunggah video saya atau, misalnya, menyisipkan tautan ke video dari YouTube dan semuanya akan dikemas menjadi satu siaran tanpa henti. Tapi saya tidak menemukan sesuatu yang cocok. Mungkin saya tidak mencari dengan baik. Satu-satunya yang sesuai dengan fungsinya adalah restream.io, layanan yang membantu menyiarkan secara bersamaan ke beberapa platform. Mereka tampaknya mengizinkan Anda mengunggah video Anda sendiri. Namun layanan ini dibuat untuk tujuan yang sangat berbeda dan mereka memperkirakan siarannya hanya akan berlangsung beberapa jam. Saya kira jika melalui layanan ini dimungkinkan untuk mengadakan siaran sepanjang waktu, maka biayanya akan mencapai puluhan, atau bahkan ratusan dolar per bulan. Tapi saya tetap ingin menyelenggarakan siarannya secara gratis atau dengan investasi finansial minimal.

Menjadi jelas bahwa untuk siaran itu perlu atau perangkat terpisah atau bahkan komputer terpisah. Saya sedang memikirkan sesuatu seperti Raspberri Pi. Dan apa? Dia tidak punya pendingin. Saya merekam video pada flash drive, menyambungkannya ke kabel Ethernet dan membiarkannya tergeletak di suatu tempat di tempat terpencil dan menyiarkannya. Pilihan. Tapi saya tidak punya papan itu sendiri atau pengalaman bekerja dengannya, jadi saya juga menolak opsi ini.

Akibatnya, saya menemukan diskusi tertentu di mana mereka membahas penciptaan server sendiri siaran. Bukan itu yang saya cari, tapi saya mendapatkan ide utamanya - Anda bisa menggunakan server! Pada pembahasan tersebut disarankan untuk menggunakan kombinasi VPS + nginx + OBS. Menjadi jelas bahwa kombinasi ini juga cocok untuk saya. Satu-satunya hal yang membingungkan saya adalah saya belum pernah mengelola server dan menurut saya memiliki server khusus sendiri itu membingungkan dan mahal. Saya memutuskan untuk mencari tahu berapa biaya untuk menyewa server dengan konfigurasi minimum dan saya terkejut.

Siarkan video Anda di YouTube XNUMX/XNUMX

Harga ditunjukkan dalam rubel Belarusia dan ini hanya remah-remah. Untuk memahaminya, 8 rubel Belarusia sama dengan 3.5 dolar atau 240 rubel Rusia. Selama sebulan menggunakan komputer lengkap yang menyala 24/7 dan memiliki akses Internet cepat. Entah kenapa, penemuan ini menjadi sangat menggembirakan bagi saya dan selama beberapa hari saya berjalan-jalan dengan sangat bahagia, seperti anak kecil yang menemukan roket luar angkasa :)

Ngomong-ngomong, saya memanfaatkan tawaran situs pertama yang Google berikan kepada saya untuk kueri “sewa VPS”. Mungkin ada lebih banyak solusi anggaran, tetapi harga ini cocok untuk saya dan saya tidak mencari lebih jauh.

Saat membuat server, Anda dapat memilih sistem operasi yang akan menjalankannya. Anda dapat mengatur siaran di salah satu sistem yang terdaftar dan membuat pilihan berdasarkan preferensi dan kemampuan finansial Anda (untuk server dengan Windows mereka meminta biaya tambahan). Saya memilih CentOS. Hanya karena saya punya sedikit pengalaman sebelumnya.

Siarkan video Anda di YouTube XNUMX/XNUMX

Langkah 2 – pengaturan server

Hal pertama yang Anda perlukan setelah membuat server adalah menyambungkannya melalui SSH. Awalnya saya menggunakan Putty, tapi kemudian saya mulai menggunakan Aplikasi Secure Shell, yang berjalan di Google Chrome. Ternyata lebih nyaman bagi saya.

Lalu saya mengubah nama host, mengatur sinkronisasi waktu di server, memperbarui sistem, mengutak-atik iptables... dan melakukan banyak hal lainnya, tetapi bukan karena itu perlu. Saya hanya tertarik untuk menyiapkan server dan itu berhasil untuk saya. Saya suka ketika itu berhasil :)

Berikut langkah-langkah yang perlu Anda ambil:

  1. Hubungkan repositori EPEL.
  2. Siapkan server FTP (saya memilih vsftp).
  3. Instal ffmpeg.

Saya tidak akan memberikan perintah secara rinci; instruksi ini lebih bersifat konseptual untuk menyampaikan rencana tindakan secara umum. Jika Anda mengalami kesulitan dengan salah satu langkah tersebut, langkah tersebut dapat diselesaikan dengan cepat menggunakan kueri mesin pencari seperti “CentOS connect EPEL” atau “CentOS install FTP server”. Dan di tautan pertama Anda dapat menemukan petunjuk langkah demi langkah yang terperinci.

Jadi seperti yang saya tulis sebelumnya, saya membutuhkan kombinasi VPS + nginx + OBS. VPS – siap. Namun pertanyaan mulai muncul pada poin lain. OBS adalah program penyiaran, Open Broadcaster Software. Dan itu hanya berfungsi dengan aliran yaitu. misalnya, ia mengambil gambar dari webcam dan menyiarkannya. Atau perekaman layar. Atau siaran yang sudah berlangsung dialihkan ke situs lain. Tapi saya tidak punya streaming, saya hanya punya sekumpulan file video yang perlu dijadikan streaming.

Saya mulai menggali ke arah ini dan menemukan ffmpeg. FFmpeg adalah sekumpulan perpustakaan sumber terbuka dan gratis yang memungkinkan Anda merekam, mengonversi, dan mengalirkan audio dan video digital dalam berbagai format.

Dan saya sangat terkejut betapa banyak yang bisa dilakukan ffmpeg. Jika mau, ia akan mengekstrak suara dari video. Jika Anda mau, itu akan memotong sebagian video tanpa pengodean ulang. Jika Anda mau, itu akan mengkonversi dari satu format ke format lainnya. Dan masih banyak lagi. Sampai-sampai Anda dapat menentukan file ke dalamnya, itu akan mengubahnya menjadi aliran dan mengirimkannya ke YouTube itu sendiri. Itu saja, rantai sudah terpasang. Yang tersisa hanyalah menyelesaikan nuansanya.

Langkah 3 – pengaturan siaran

Kami membuat siaran di YouTube. Pada tahap ini kita hanya membutuhkan link dan kunci siarannya saja. Pada tangkapan layar di bawah, mereka disorot dengan warna merah.

Siarkan video Anda di YouTube XNUMX/XNUMX

Selanjutnya unggah file video ke server, yang kami rencanakan untuk disiarkan. Sebenarnya FTP hanya diperlukan untuk tahap ini saja. Jika Anda memiliki cara mudah lain untuk mengunggah file ke server, Anda tidak perlu menyiapkan server FTP.

Kami mengirimkan streaming ke YouTube. Untuk memulai siaran, Anda perlu menjalankan ffmpeg dengan beberapa atribut. Seperti inilah perintah terpendek yang saya dapatkan:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%

Penguraian kode atribut-re – menunjukkan bahwa file harus dikonversi ke aliran.

-i – menunjukkan file mana yang harus diputar. Penting agar perintah diluncurkan dari direktori yang sama tempat file video itu sendiri berada. Jika tidak, Anda harus menentukan tautan absolut ke file tersebut, seperti /usr/media/lecture1.mp4.

-f – mengatur format file keluaran. Dalam kasus saya, ternyata ffmpeg mengkonversi file saya dari mp4 ke flv dengan cepat.

Dan pada akhirnya kami menunjukkan data yang kami ambil dari YouTube di halaman pengaturan siaran, yaitu. alamat tujuan transfer data, dan kunci siaran agar siaran ditampilkan secara khusus di saluran Anda.

Jika Anda melakukan semuanya dengan benar, maka setelah menjalankan perintah ini, YouTube akan melihat aliran yang dikirimkan. Untuk memulai siaran, Anda hanya perlu mengklik tombol “Mulai Siaran” di YouTube itu sendiri.

Langkah 4 – tambahkan otonomi

Selamat! Sekarang Anda tahu cara memulai siaran dari file video. Tapi ini tidak cukup untuk siaran XNUMX/XNUMX. Penting bahwa setelah video pertama selesai diputar, video berikutnya segera dimulai, dan ketika semua video ditampilkan, pemutaran dimulai lagi.

Saya menemukan opsi berikut: buat file .sh di mana saya menulis perintah untuk setiap file video dan di bagian paling akhir menunjukkan perintah untuk menjalankan skrip yang sama lagi. Hasilnya adalah rekursi seperti ini:

Команда 1... (запуск трансляции файла lecture1.mp4)
Команда 2... (запуск трансляции файла lecture2.mp4)
Команда 3... (запуск трансляции файла lecture3.mp4)
bash start.sh

Dan ya, itu berhasil. Puas dengan diri saya sendiri, saya meluncurkan siaran percobaan dan pergi tidur.

Di pagi hari, kejutan yang tidak menyenangkan menanti saya. Ternyata siarannya hanya berlangsung beberapa menit dan segera berakhir begitu saya mematikan komputer. Penyelidikan menunjukkan bahwa perintah yang diluncurkan dengan cara ini dijalankan saat pengguna masuk ke server. Segera setelah saya memutus sambungan, perintah yang saya jalankan terputus. Untuk mencegah hal tersebut terjadi, cukup di depan tim bash tambahkan perintah nohup. Ini akan memungkinkan proses yang sedang berjalan tetap berjalan terlepas dari kehadiran Anda.

Versi minimal terakhir dari skrip terlihat seperti ini:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%
ffmpeg -re -i lecture2.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%
ffmpeg -re -i lecture3.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%
nohup bash start.sh $

Dimana start.sh adalah file tempat skrip ini ditulis. Dan file ini harus berada di direktori yang sama dengan file video.

Menambahkan tanda dolar di akhir memungkinkan proses berjalan di latar belakang sehingga Anda dapat terus menggunakan konsol tanpa mengganggu siaran.

Bonusnya termasuk barang berikut:

  • Anda dapat mengganti pemutaran file secara manual. Untuk melakukan ini, Anda perlu “mematikan” proses ffmpeg yang sedang berjalan. Setelah ini, pemutaran file berikutnya dari daftar akan dimulai secara otomatis.
  • Video baru dapat ditambahkan ke siaran tanpa menghentikan siaran. Cukup unggah video ke server, tambahkan perintah untuk menjalankan file ini di skrip, dan simpan. Itu saja. Pada putaran pemutaran berikutnya, file baru akan disiarkan bersama dengan file lama.

Langkah 5 – sesuaikan ffmpeg

Pada prinsipnya, kita bisa berhenti di situ. Namun saya ingin membuat siarannya sedikit lebih bersahabat dengan pemirsa.

Katakanlah seseorang pergi ke siaran, mulai menonton, menyukainya dan ingin menonton ceramah ini dari awal, tetapi siaran tersebut tidak memungkinkan untuk diputar ulang. Untuk menonton ceramah dari awal, seseorang perlu mengunjungi situs web saya dan mendapatkan rekaman ceramah yang diminati. Bagaimana Anda mengetahui kuliah mana yang menarik minatnya? Sudah ada 16 ceramah di situs ini dan hanya bertambah setiap minggunya. Saya pikir bahkan saya, yang memfilmkan dan mengedit semua kuliah ini, tidak akan dapat menentukan secara acak kuliah mana itu. Oleh karena itu, setiap perkuliahan perlu memiliki tujuan tertentu.

Pilihan untuk menambahkan keterangan ke file video sumber dalam program pengeditan tidak cocok untuk saya. Penting untuk memastikan bahwa file asli digunakan. Sehingga mendukung siaran tersebut membutuhkan gerakan tubuh sesedikit mungkin dari saya.

Ternyata ffmpeg juga bisa membantu saya dalam hal ini. Ia memiliki atribut khusus -vf, yang memungkinkan teks ditempatkan di atas video. Untuk menambahkan teks ke video, Anda perlu menambahkan fragmen berikut ke perintah:

-vf drawtext="fontfile=OpenSans.ttf:text='Лекция 13: Психология эмоций. Как создавать радость?':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670"

Penjelasan parameterfontfile= – tautan ke file font. Tanpa ini, teks tidak akan ditambahkan ke video. Cara termudah adalah dengan meletakkan file font di folder yang sama dengan video. Atau Anda perlu menentukan path lengkap ke file tersebut.

text= – sebenarnya, teks itu sendiri yang perlu ditempatkan di atas video.

fontsize= – ukuran font dalam piksel.

fontcolor= - warna huruf.

borderw= – ketebalan garis di sekitar teks dalam piksel (Saya memiliki teks putih dengan garis hitam setebal 1 piksel).

bordercolor= – warna garis luar.

x= и y= – koordinat teks. Dot 0;0 terletak di pojok kiri atas. Koordinat saya dipilih sedemikian rupa sehingga teks ditempatkan di pojok kiri bawah dengan resolusi video 1280x720 piksel.

Ini terlihat seperti ini:

Siarkan video Anda di YouTube XNUMX/XNUMX

Langkah 6 – tentukan kualitas siaran

Itu saja, siarannya sudah siap. Siaran FFmpeg, file diputar, kehadiran saya tidak diperlukan untuk siaran. Bahkan setiap kuliah ditandatangani. Sepertinya itu saja.

Namun satu nuansa lagi muncul - Saya memilih konfigurasi server minimum dan tidak menghentikan siaran. Konfigurasi server: 1 inti (seperti 2.2 GHz), RAM 1 gigabyte, SSD 25 GB. Terdapat cukup RAM, namun prosesor hampir terisi penuh pada 100% (dan kadang-kadang bahkan 102-103% :) Hal ini menyebabkan siaran terhenti setiap beberapa detik. Tidak bagus.

Anda cukup mengambil konfigurasi yang lebih mahal dengan dua inti, untungnya, dengan teknologi cloud, perubahan konfigurasi server terjadi dengan menekan beberapa tombol. Namun saya ingin menyesuaikan kapasitas konfigurasi minimum. Saya mulai mempelajari dokumentasi ffmpeg dan ya, ada juga pengaturan di sana yang memungkinkan Anda mengatur beban pada sistem.

Kualitas gambar yang tinggi dapat dicapai dengan dua cara: beban CPU yang tinggi atau lalu lintas keluar yang tinggi. Ternyata semakin banyak beban yang dapat ditanggung prosesor, semakin sedikit bandwidth saluran yang dibutuhkan. Atau Anda tidak dapat memuat prosesor terlalu banyak, tetapi Anda memerlukan saluran lebar dengan cadangan lalu lintas yang besar. Jika ada batasan pada prosesor dan ukuran saluran/lalu lintas keluar, maka Anda harus menurunkan kualitas gambar agar siaran berjalan lancar.

Server saya memiliki akses ke saluran lebar 10 Mbit/s. Lebar ini pas. Tapi ada batasan lalu lintas - 1 TB per bulan. Oleh karena itu, untuk memenuhi pembatasan lalu lintas, aliran keluar saya tidak boleh melebihi ~300 KB per detik yaitu. Bitrate aliran keluar tidak boleh lebih dari 2,5 Mbit/s. Omong-omong, YouTube merekomendasikan penyiaran pada bitrate ini.

Untuk mengatur beban pada sistem, ffmpeg menggunakan pendekatan berbeda. Ditulis dengan baik tentang ini di sini. Saya akhirnya menggunakan dua atribut: -crf и -preset.

Faktor Tingkat Konstan (CRF) – ini adalah koefisien yang dapat digunakan untuk menyesuaikan kualitas gambar. CRF dapat memiliki nilai dari 0 hingga 51, dengan 0 adalah kualitas file sumber, 51 adalah kualitas terburuk. Disarankan untuk menggunakan nilai dari 17 hingga 28, defaultnya adalah 23. Dengan koefisien 17, video secara visual akan identik dengan aslinya, tetapi secara teknis tidak akan sama. Dokumentasi juga menyatakan bahwa ukuran video akhir, bergantung pada CRF yang ditentukan, berubah secara eksponensial, yaitu. meningkatkan koefisien sebesar 6 poin akan menggandakan bitrate video keluar.

Jika menggunakan CRF Anda dapat memilih “berat” gambar yang keluar, lalu menggunakan preset (-preset) Anda dapat menentukan seberapa berat prosesor yang akan dimuat. Atribut ini memiliki parameter berikut:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium – nilai bawaan
  • slow
  • slower
  • veryslow

Semakin cepat parameter yang ditentukan, semakin tinggi beban pada prosesor.

Saya pertama-tama memilih preset yang pada dasarnya terlalu sulit untuk prosesor saya, dan kemudian memilih beban dengan lebih teliti menggunakan CRF. Dalam kasus saya, presetnya berfungsi fast, dan untuk crf saya menetapkan nilai 24.

Kesimpulan

Itu saja. Perintah terakhir untuk memulai siaran adalah ini:

ffmpeg -re -i lecture1.mp4 -vf drawtext="fontfile=OpenSans.ttf:text='Лекция 1: Жонглирование картинами мира':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670" -c:v libx264 -preset fast -crf 24 -g 3 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%

Hanya ada dua poin yang belum dijelaskan tersisa di sini:

1) -c:v libx264 – menentukan codec tertentu untuk bekerja dengan file sumber.
2) -g 3 – indikasi eksplisit jumlah bingkai kunci. Dalam hal ini, ditentukan bahwa setiap frame ketiga harus menjadi frame kunci. Nilai standarnya adalah 5 atau 8, tetapi YouTube bersumpah dan meminta setidaknya 3.

Anda dapat melihat kualitas siarannya di sini.

Beban di server adalah sebagai berikut:

Siarkan video Anda di YouTube XNUMX/XNUMX

Siarkan video Anda di YouTube XNUMX/XNUMX

Berdasarkan data pantauan terlihat beban prosesor berkisar antara 70% hingga 95% dan selama seminggu siaran tidak pernah mencapai 100%. Artinya dengan pengaturan tersebut prosesor sudah cukup.

Dengan memuat disk, saya dapat mengatakan bahwa itu hampir tidak dimuat dan HDD biasa sudah cukup untuk siaran.

Namun jumlah lalu lintas keluar membuat saya khawatir. Ternyata streaming keluar saya berkisar antara 450 hingga 650 KB per detik. Dalam sebulan jumlah ini akan menjadi sekitar 1,8 terabyte. Anda mungkin harus membeli lalu lintas tambahan atau beralih ke konfigurasi dengan dua inti karena... Saya tidak ingin mengurangi kualitas gambar.

***

Oleh karena itu, menurut saya, pengaturan siaran seperti itu dari awal membutuhkan waktu sekitar 1-2 jam. Selain itu, mengunggah video ke server akan memakan banyak waktu.

Peluncuran siaran semacam itu tidak membenarkan dirinya sebagai alat pemasaran. Mungkin, jika kita meningkatkan penayangan sehingga algoritme YouTube menangkap siaran ini dan mulai secara aktif menampilkannya dalam rekomendasi, sesuatu akan berhasil. Dalam kasus saya, dalam 16 hari siaran terus menerus, itu ditonton 58 kali.

Itu tidak apa-apa. Siarannya sangat cocok dengan halaman utama situs saya. Hal ini memberi saya kesempatan untuk segera membentuk opini saya tentang dosen dan dosen itu sendiri.

Dan suatu saat. Penting agar siaran tersebut tidak melanggar hak cipta siapa pun, jika tidak maka akan diblokir. Saya tenang tentang siaran saya karena ... Saya secara khusus memilih sisipan musik untuk penggunaan gratis, dan penulis konten duduk di depan komputer terdekat dan sama sekali tidak menentang saya menggunakan kontennya :)

Namun jika Anda memutar radio di latar belakang siaran Anda, atau Anda menggunakan trek favorit saat mengedit, atau mengambil rangkaian video dari video musik, serial TV, atau film populer, maka siaran Anda berisiko. Penting juga bahwa siaran tersebut membawa setidaknya muatan semantik minimal, jika tidak maka siaran tersebut dapat diblokir sebagai spam.

***

Hanya itu yang saya punya. Saya harap manual ini dapat bermanfaat bagi seseorang. Baiklah, jika ada yang perlu ditambahkan, tulislah, saya akan dengan senang hati membaca tambahan dan klarifikasi artikel tersebut.

Sumber: www.habr.com

Tambah komentar