Siarkan video Anda di YouTube sepanjang waktu

Baru-baru ini, sebagai hobi, saya merekam ceramah seorang psikolog yang sudah dikenal di video. Saya memasang dan menerbitkan rekaman di situs web saya. Sebulan yang lalu, saya mendapat ide untuk mengorganisir siaran sepanjang waktu dari ceramah ini di YouTube 24/7. Semacam "saluran" tematik yang didedikasikan untuk pertumbuhan pribadi.

Bagaimana membuat siaran normal, saya tahu. Tapi bagaimana cara membuatnya menjadi siaran file video? Bahwa dia berjalan 24/7, fleksibel, otonom, dan pada saat yang sama tidak bergantung pada komputer di rumah saya. Inilah yang harus saya cari tahu.



Butuh beberapa hari untuk menemukan solusi. Saya mempelajari banyak forum dan berbagai manual yang tanpanya siaran saya tidak akan muncul. Dan sekarang, ketika lelucon itu sukses, saya merasa perlu membagikan keputusan saya. Jadi artikel ini muncul.

Singkatnya, solusi terakhir adalah sebagai berikut: VPS + ffmeg + bash script . Di bawah potongan, saya menggambarkan langkah-langkah yang diambil dan berbicara tentang "jebakan" yang ditemukan selama siaran.

Langkah 1 - dari mana siaran akan pergi?


Pada awalnya, perlu untuk menentukan di mana siaran akan dilakukan, di mana sumbernya berada. Hal pertama yang terlintas dalam pikiran adalah dari komputer di rumah . Kumpulkan video ke dalam daftar main dan mainkan dalam pemutar video apa pun. Kemudian ambil gambar layar dan disiarkan ke YouTube. Tapi saya segera menolak opsi ini. untuk menerapkannya, Anda harus terus menyalakan komputer di rumah, dan ini adalah suara bising dari pendingin bahkan di malam hari dan peningkatan konsumsi energi (+ 100-150 kWh setiap bulan). Dan ternyata Anda tidak akan dapat menggunakan komputer di rumah selama siaran. setiap gerakan mouse akan terlihat di siaran.

Kemudian saya mulai melihat ke arah layanan cloud. Saya sedang mencari layanan yang sudah jadi di mana Anda dapat mengunggah video Anda atau, misalnya, memasukkan tautan ke video dari YouTube dan semuanya akan dikemas menjadi satu siaran tanpa henti. Tetapi saya tidak menemukan sesuatu yang cocok. Mungkin aku terlihat buruk. Satu-satunya hal yang cocok untuk fungsionalitas adalah restream.io, layanan yang membantu menyiarkan secara bersamaan di berbagai platform. Mereka tampaknya dapat mengunggah video mereka. Tetapi layanan ini dibuat untuk tujuan yang sama sekali berbeda dan mereka berharap bahwa siaran hanya akan berlangsung beberapa jam. Saya pikir jika melalui layanan ini dimungkinkan untuk menyelenggarakan siaran sepanjang waktu, maka ini akan mencapai puluhan, atau bahkan ratusan dolar per bulan. Tetapi saya masih ingin mengatur siaran baik secara gratis atau dengan investasi keuangan minimal.

Menjadi jelas bahwa Anda perlu menyiarkanperangkat terpisah atau bahkan komputer terpisah. Berpikir ke arah sesuatu seperti Raspberri Pi. Dan apa? Dia tidak punya pendingin. Saya merekam video pada USB flash drive, memasang kabel Ethernet dan membiarkannya berada di suatu tempat di tempat terpencil, itu siaran. Pilihan. Tetapi saya tidak memiliki papan itu sendiri maupun pengalaman dengannya, jadi saya juga menolak opsi ini.

Pada akhirnya, saya menemukan sebuah diskusi di mana mereka membahas membuat server Anda sendirisiaran. Ini bukan apa yang saya cari, tapi saya menangkap ide utama - Anda dapat menggunakan server! Dalam diskusi itu, mereka menyarankan menggunakan sekelompok VPS + nginx + OBS. Menjadi jelas bahwa kelompok ini cocok untuk saya. Satu-satunya hal yang membingungkan saya adalah bahwa saya tidak pernah mengelola server dan menurut saya server khusus saya bingung dan mahal. Saya memutuskan untuk mencari tahu berapa biaya untuk menyewa server dalam konfigurasi minimum dan terkejut.

gambar

Harga dalam rubel Belarusia dan mereka hanya remah-remah. Untuk memahami, 8 rubel Belarusia sekitar 3,5 dolar atau 240 rubel Rusia. Selama sebulan menggunakan komputer lengkap yang dinyalakan 24/7 dan memiliki akses Internet cepat. Untuk beberapa alasan, penemuan ini sangat menggembirakan bagi saya, dan selama beberapa hari saya berjalan sangat senang seperti anak kecil yang menemukan roket ruang angkasa :)

Ngomong-ngomong, saya mengambil keuntungan dari tawaran situs pertama yang Google berikan kepada saya atas permintaan โ€œsewa VPSโ€. Mungkin ada lebih banyak solusi anggaran, tetapi harga ini cocok untuk saya dan saya tidak melihat lebih jauh.

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

gambar

Langkah 2 - pengaturan server


Hal pertama yang Anda butuhkan setelah membuat server adalah menghubungkannya melalui SSH. Awalnya saya menggunakan Putty, tetapi kemudian saya mulai menggunakan Aplikasi Secure Shell, yang berjalan di Google Chrome. Jadi ternyata lebih nyaman bagi saya.

Kemudian saya mengubah nama host, mengatur sinkronisasi waktu di server, memperbarui sistem, bermain-main dengan iptables ... dan melakukan banyak hal, tetapi bukan karena itu perlu. Itu hanya menarik bagi saya untuk mengatur server dan itu berhasil untuk saya. Saya suka ketika ternyata :)

Tapi langkah-langkah yang perlu dilakukan:

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

Saya tidak akan memberikan rincian tim, instruksi ini agak konseptual untuk menyampaikan rencana aksi umum. Jika Anda mengalami kesulitan dengan salah satu langkah, langkah-langkah tersebut cepat diselesaikan dengan permintaan di mesin pencari seperti "CentOS connect EPEL" atau "Instalasi server CentOS FTP". Dan pada tautan pertama Anda dapat menemukan petunjuk langkah demi langkah yang terperinci.

Jadi, seperti yang saya tulis sebelumnya, saya membutuhkan banyak VPS + nginx + OBS. VPS - siap. Tetapi di sini, pada poin-poin yang tersisa, pertanyaan mulai muncul. OBS adalah program siaran, Open Broadcaster Software. Dan itu hanya bekerja dengan utas yaitu. misalnya, mengambil gambar dari webcam dan menyiarkannya. Atau rekaman layar. Atau siaran yang sudah berlangsung dialihkan ke situs lain. Dan saya tidak punya streaming, saya hanya punya satu set file video yang saya butuhkan untuk membuat streaming.

Dia mulai menggali ke arah ini dan menemukan ffmpeg. FFmpeg adalah seperangkat pustaka sumber terbuka gratis yang memungkinkan Anda untuk merekam, mengonversi, dan mentransfer rekaman audio dan video digital dalam berbagai format.

Dan saya sangat terkejut betapa banyak yang bisa dilakukan ffmpeg. Jika Anda mau, itu akan mengeluarkan suara dari video. Jika Anda mau, itu akan memotong sebagian video tanpa transcoding. Jika Anda mau, itu akan dikonversi dari satu format ke yang lain. Dan masih banyak lagi. Hingga Anda dapat menentukan file untuknya, ia akan mengonversinya menjadi streaming dan mentransfernya sendiri ke YouTube. Semuanya, rantai dirakit. Tetap hanya untuk memperbaiki nuansa.

Langkah 3 - pengaturan siaran


Kami membuat siaran di YouTube. Pada tahap ini, kita hanya perlu tautan dan kunci terjemahan. Pada tangkapan layar di bawah, mereka disorot dengan warna merah.

gambar

Selanjutnya, unggah file video ke server yang kami rencanakan untuk disiarkan. Sebenarnya, FTP hanya diperlukan untuk tahap ini. Jika Anda memiliki cara mudah lain untuk mengunggah file ke server, maka server FTP dapat ditinggalkan.

Kami streaming ke YouTube. Untuk memulai penyiaran, Anda harus menjalankan ffmpeg dengan beberapa atribut. Inilah perintah terpendek yang saya dapat:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%

Dekripsi Atribut
-re โ€“ , .

-i โ€“ , . , , -. , /usr/media/lecture1.mp4.

-f โ€“ . , ffmpeg ยซ ยป mp4 flv.

, YouTube .. , , , .

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

Langkah 4 - tambahkan otonomi


Selamat! Sekarang Anda tahu cara memulai penyiaran dari file video. Tetapi ini tidak cukup untuk siaran sepanjang waktu. Adalah penting bahwa setelah video pertama selesai diputar, yang berikutnya akan segera dimulai, dan ketika semua video ditampilkan, pemutaran dimulai dari awal lagi.

Saya datang dengan opsi berikut: membuat file .sh di mana saya mendaftarkan perintah untuk setiap file video dan pada akhirnya menunjukkan perintah untuk memulai kembali skrip yang sama. Ternyata semacam rekursi:

 1... (   lecture1.mp4)
 2... (   lecture2.mp4)
 3... (   lecture3.mp4)
bash start.sh

Dan ya, itu berhasil. Saya, senang dengan diri saya sendiri, memulai siaran tes dan pergi tidur.

Kejutan yang tidak menyenangkan menunggu saya di pagi hari. Ternyata siaran itu berlangsung hanya beberapa menit dan berakhir segera setelah saya mematikan komputer saya. Investigasi menunjukkan bahwa perintah yang diluncurkan dengan cara ini dijalankan ketika pengguna diotorisasi di server. Segera setelah saya terputus, eksekusi perintah yang saya mulai terganggu. Untuk mencegah hal ini terjadi, cukup bashmenambahkan tim sebelum tim nohup. Ini akan memungkinkan proses yang berjalan berjalan terlepas dari keberadaan Anda.

Versi minimum akhir 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 $

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

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

Dari bonus, roti berikut ternyata:

  • Anda dapat mengubah pemutaran file secara manual. Untuk melakukan ini, Anda perlu "membunuh" proses ffmpeg yang sedang berjalan. Setelah itu, pemutaran file selanjutnya dari daftar akan secara otomatis dimulai.
  • Video baru dapat ditambahkan ke siaran tanpa menghentikan siaran. Cukup unggah video ke server, tambahkan perintah untuk menjalankan file ini di skrip, simpan. Dan itu dia. Di babak pemutaran berikutnya, file baru akan disiarkan bersama dengan file-file lama.

Langkah 5 - konfigurasikan ffmpeg


Dalam hal ini, pada prinsipnya, orang bisa berhenti. Tapi saya ingin membuat siaran itu sedikit lebih ramah bagi penonton.

Misalkan seseorang pergi ke siaran, mulai menonton, dia menyukainya dan ingin menonton ceramah ini dari awal, dan siaran tidak termasuk rewinding. Untuk melihat kuliah dari awal, seseorang harus pergi ke situs web saya dan mendapatkan catatan kuliah yang menarik. Dan bagaimana memahami kuliah apa yang menarik baginya? Situs ini memiliki 16 kuliah dan setiap minggu hanya ada lebih banyak. Saya pikir bahkan saya, yang memotret dan mengedit semua kuliah ini, tidak akan dapat menentukan kuliah mana yang berasal dari fragmen acak. Oleh karena itu, setiap kuliah harus ditunjuk.

Pilihan untuk menambahkan teks ke file video sumber dalam program pengeditan tidak cocok untuk saya. Itu perlu untuk memastikan bahwa file asli digunakan. Untuk mendukung siaran diperlukan dari saya gerakan tubuh sesedikit mungkin.

Ternyata ffmpeg dapat membantu saya dengan ini juga. Ini memiliki atribut khusus -vfyang memungkinkan Anda untuk meletakkan teks 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"

Decoding parameter
fontfile= โ€“ . . . .

text= โ€“ , , .

fontsize= โ€“ .

fontcolor= โ€“ .

borderw= โ€“ ( 1 ).

bordercolor= โ€“ .

x= y= โ€“ . 0;0 . , 1280720 .


Ini terlihat seperti ini:

gambar

Langkah 6 - menentukan kualitas siaran


Semuanya, siaran siap. Siaran FFmpeg, file diputar, keberadaan saya tidak diperlukan untuk siaran. Bahkan setiap kuliah ditandatangani. Terlihat seperti itu.

Tapi nuansa lain muncul - saya memilih konfigurasi server minimum dan itu tidak menarik siaran. Konfigurasi server: 1 inti (seperti 2.2 GHz), 1 gigabyte RAM, 25 GB SSD. Ada cukup RAM, tetapi prosesor hampir sepenuhnya masuk memuat 100% (dan kadang-kadang bahkan pada 102-103% :) Ini menyebabkan fakta bahwa siaran membeku sekali setiap beberapa detik. Jelek.

Anda bisa saja mengambil konfigurasi yang lebih mahal dengan dua inti, manfaatnya adalah bahwa dengan teknologi cloud, konfigurasi server diubah dengan menekan beberapa tombol. Tetapi saya ingin menyesuaikan dengan kekuatan konfigurasi minimum. Saya mulai mempelajari dokumentasi ffmpeg dan ya, ada juga pengaturan di sana yang memungkinkan Anda untuk menyesuaikan beban pada sistem.

Kualitas gambar yang tinggi dapat dicapai dengan dua cara: baik beban prosesor yang tinggi, atau lalu lintas keluar yang besar. Ternyata semakin banyak prosesor dapat mengambil beban, semakin sedikit bandwidth yang dibutuhkan saluran. Atau Anda tidak dapat memuat prosesor dengan berat, tetapi Anda membutuhkan saluran lebar dengan margin lalu lintas yang besar. Jika ada batasan pada prosesor dan pada ukuran saluran keluar / lalu lintas, maka Anda harus mengurangi kualitas gambar agar siaran berjalan dengan lancar.

Server saya memiliki saluran 10 Mbps. Lebar ini lurus dengan margin. Tetapi ada batas lalu lintas - 1 TB per bulan. Oleh karena itu, untuk memenuhi batasan lalu lintas, arus keluar saya tidak boleh melebihi ~ 300 Kb per detik yaitu bitrate dari aliran keluar tidak boleh lebih dari 2,5 Mbps. YouTube, omong-omong, hanya merekomendasikan penyiaran dalam bitrate seperti itu.

Ffmpeg menggunakan pendekatan berbeda untuk mengatur beban pada sistem. Ditulis dengan baik di sini . Saya akhirnya menggunakan dua atribut: -crfdan -preset.

Constant Rate Factor (CRF)- ini adalah koefisien yang dengannya Anda dapat menyesuaikan kualitas gambar. CRF dapat berkisar dari 0 hingga 51, di mana 0 adalah kualitas file sumber, 51 adalah kualitas terburuk. Disarankan untuk menggunakan nilai dari 17 hingga 28, standarnya adalah 23. Dengan rasio 17, video secara visual akan identik dengan aslinya, tetapi secara teknis tidak. Dokumentasi juga menyatakan bahwa ukuran video akhir, tergantung pada CRF yang ditentukan, berubah secara eksponensial yaitu. meningkatkan koefisien sebesar 6 poin akan menggandakan bitrate dari video keluar.

Jika menggunakan CRF Anda dapat memilih "bobot" dari gambar yang keluar, kemudian menggunakan preset (-preset) Anda dapat menentukan berapa banyak prosesor akan dimuat. Parameter untuk atribut ini memiliki yang berikut:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - nilai default
  • slow
  • slower
  • veryslow

Semakin cepat parameter ditentukan, semakin tinggi beban pada prosesor.

Saya pertama kali mengambil preset, yang pada dasarnya "tangguh" untuk prosesor saya, dan kemudian lebih baik menyesuaikan beban menggunakan CRF. Dalam kasus saya, preset muncul fast, dan untuk crf saya menetapkan nilai 24.

Kesimpulan


Itu saja. Perintah terakhir untuk memulai siaran saya dapat 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/%_%

Di sini hanya ada dua momen yang tidak ditentukan:

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

Kualitas siaran apa yang bisa dilihat di sini .

Beban server adalah sebagai berikut:

gambar

gambar

Berdasarkan data pemantauan, jelas bahwa beban prosesor bervariasi dari 70% hingga 95% dan siaran tidak pernah mencapai 100% dalam seminggu. Jadi, dengan pengaturan ini, prosesor sudah cukup.

Saat memuat disk, saya dapat mengatakan bahwa hampir tidak dimuat dan HDD biasa harus cukup untuk penyiaran.

Tetapi jumlah lalu lintas keluar mengganggu saya. Ternyata aliran keluar saya berkisar 450 hingga 650 KB per detik. Selama sebulan akan sekitar 1,8 terabyte. Anda mungkin harus membeli lalu lintas atau masih beralih ke konfigurasi dual-core karena Saya tidak ingin mengurangi kualitas gambar.

***

Sebagai hasilnya, saya akan mengatakan bahwa pengaturan siaran seperti itu dari awal membutuhkan waktu sekitar 1-2 jam. Selain itu, sebagian besar waktu yang diperlukan untuk mengunggah video ke server.

Sebagai alat pemasaran, peluncuran siaran semacam itu tidak membuahkan hasil. Mungkin jika Anda memutar tampilan sehingga algoritma YouTube mengambil siaran ini dan secara aktif menunjukkannya dalam rekomendasi, maka sesuatu akan berhasil. Dalam kasus saya, selama 16 hari siaran terus-menerus, ditonton 58 kali.

Itu tidak apa-apa. Siaran secara harmonis pas di halaman utama situs saya. Ternyata semacam peluang untuk dengan cepat memutuskan tentang dosen dan dosen itu sendiri.

Dan satu saat. Adalah penting bahwa siaran tidak melanggar hak cipta orang lain, jika tidak maka akan diblokir. Saya tenang untuk siaran saya. Saya secara khusus memilih sisipan musik dengan penggunaan gratis, dan penulis konten duduk di komputer tetangga dan sama sekali tidak menentang saya menggunakan kontennya :)

Tetapi jika Anda memiliki radio yang diputar di latar belakang di suatu tempat di latar belakang, atau Anda menggunakan trek favorit Anda saat mengedit, atau Anda mengambil video dari video musik populer, seri atau film, maka siaran Anda berisiko. Penting juga bahwa siaran membawa setidaknya beban semantik minimal, jika tidak dapat diblokir sebagai spam.

***

Itu saja untuk saya. Saya harap manual ini akan melayani seseorang dengan baik. Nah, jika Anda memiliki sesuatu untuk ditambahkan - tulis, saya akan dengan senang hati membaca tambahan dan klarifikasi untuk artikel tersebut.

All Articles