Semuanya berawal ketika, menggunakan saya, menggunakan OBS Studio dan beberapa jenis program untuk menghidupkan wallpaper desktop, saya membuat logo video dari logo (yang juga dianimasikan di bawah musik yang sedang diputar). Pada saat itu, saya menyadari bahwa OBS Studio dapat JAUH lebih dari sekadar streaming game. Setelah berkenalan lebih dekat dengan OBS Studio, ia mengklaim sebagai program paling keren yang pernah saya temui .
Saya harus mengalirkan acara kecil untuk teman-teman, tetapi karena saya memiliki peralatan untuk suara yang bagus dan keinginan untuk bersikap dingin, saya bingung oleh organisasi aliran dengan suara yang terpisah dan beberapa kamera. Karena berbagai alasan, alirannya ternyata begitu-begitu, tetapi setelah pengalaman ini, saya membayangkan bagaimana seharusnya. Dan saya ingin berbagi. Di sini

Apa?
Idenya adalah menemukan 2-3 operator nirkabel yang pergi ke berbagai tempat acara, berkomunikasi dengan orang-orang, melepas lalu lintas, dll. (yah, seperti pria serius, singkatnya). Dan seseorang duduk, berkomunikasi dengan mereka di walkie-talkie, dan membentuk dari semua ini (dan sesuatu yang lain, misalnya, segala jenis jendela / monitor / proyektor tertahan) konten video menarik yang tidak membosankan untuk ditonton.
Anda juga dapat menggabungkan layar beberapa komputer dalam satu aliran, mungkin ini bisa berguna untuk game. Meskipun kemungkinan besar ada teknologi lain khusus untuk tugas ini.
Mengapa
Karena ini memungkinkan Anda untuk melakukan yang sangat keren dan sangat mengubah plafon teknologi dari kualitas aliran hampir tanpa hasil.
Saat menggunakan banyak aliran video, kesejukan aliran akan ditentukan oleh komponen kreatif dan organisasi (baik, dan kualitas koneksi).
Apa?
- Laptop
1.1. Studio Obs
1.2. nginx dengan modul rtmp - Operator dengan smartphone mereka
2.1. Beberapa jenis aplikasi dari mengeluarkan permintaan "stream rtmp", misalnya Larix Broadcaster , atau (jika ada sedikit uang tambahan) Ace Live Streaming atau BitStream - Wi-Fi yang stabil, lebih disukai 5GHz
- Uplink yang stabil
Jika Anda memiliki hal lain, Anda dapat membuat suara yang bagus, setidaknya pada kamera stasioner (yang dapat berupa web berkualitas relatif tinggi).
Dan jika ada komputer Linux lain (mereka mengatakan bahwa Raspberry Pi tidak masalah untuk β€3 stream), Anda dapat sedikit membongkar komputer utama dan jaringannya untuk memproses dan mengirim stream.
Bagaimana?
Protokol yang dikenal untuk streaming video adalah RTMP . Mencoba menggunakan sesuatu yang lain mengarah pada kelambatan liar, ini adalah kesalahan utama saya.
Dalam keadilan, perlu dicatat teknologi NewTek NDI (terima kasih, Alexsey ), yang tampaknya lebih keren daripada RTMP. Namun, untuk kasus pengguna kami, menggunakan NDI akan membutuhkan banyak uang ekstra.
Ternyata menerima aliran RTMP dan mengalihkannya ke OBS Studio semudah menembaki pir. Anda hanya perlu mengkompilasi nginx dengan modul khusus dan menulis konfigurasi. Tetapi lebih lanjut tentang itu nanti.
Dalam cara yang baik, Anda perlu melakukan sesuatu seperti ini:

Artinya, jangan berikan ponsel Internet sehingga mereka tidak menghabiskan sumber daya untuk apa pun selain aliran.
Tetapi jika sudah ada Wi-Fi yang bagus dengan Internet (dan tidak ada titik akses tambahan pada 5GHz), maka Anda tidak dapat meremehkan dan menggunakan koneksi yang ada. Namun, masih diinginkan untuk mengirim aliran terakhir dari koneksi lain, atau, dalam kasus ekstrim, dari yang sama, tetapi melalui kabel.
Jika ada kebutuhan untuk menerima stream dari kamera dan mengirim stream terakhir melalui wifi yang sama, hati-hati menguji stabilitas (dan perhatikan bahwa itu akan sangat menurun jika kerumunan perangkat melompat pada wifi ini).
Bagaimana cara meningkatkan server RTMP?
Lebih baik melakukan ini di Linux, agar tidak mengalami masalah dengan semua jenis MINGW / MSYS. Dan pada perangkat keras terpisah (belum tentu kuat). Atau di buruh pelabuhan, maka Anda dapat melewati bagian ini, karena buruh pelabuhan sudah ada . Melalui WSL juga dimungkinkan, tetapi akan diperlukan untuk meneruskan port TCP 1935 secara manual di firewall.
Berikut ini adalah panduan hebat Cara mengatur server RTMP pribadi Anda menggunakan nginx , dan itu juga ditulis di dok . Menceritakan kembali freestyle secara singkat:
Kami menempatkan dependensi:
sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev
Unduh versi Mainline terbaru dari sumber dari sini :
wget http://nginx.org/download/nginx-1.15.2.tar.gz
Unduh versi terbaru dari modul RTMP :
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip -O rtmp-module.zip unzip !$ -d .
Buat Makefile:
./configure --with-http_ssl_module --add-module=./nginx-rtmp-module-master
Jika Anda jatuh sebelum mencapai Configuration summary
, kami memperbaiki masalahnya.
Perintah ini akan mengonfigurasi streamer nginx Anda untuk hidup di /usr/local/nginx/
dan dijalankan dengan perintah sudo /usr/local/nginx/sbin/nginx
. Dengan demikian, nginx dari repositori tidak merasakan apa-apa. Ini dapat diubah dengan memeriksa ./configure --help
.
Kami mengkompilasi:
make -j4
Pasang:
echo "nginx with RTMP module" > description-pak sudo checkinstall --pkgname nginx-rtmp --provides nginx --nodoc --deldesc -y sudo mkdir /usr/local/nginx/logs/ # Doesn't start without it
Pada prinsipnya, menggunakan make install
dalam hal ini aman, tetapi tetap tidak perlu .
Periksa
$ /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.15.2
Sesuaikan
sudo vim /usr/local/nginx/conf/nginx.conf
Pada akhirnya, tambahkan konfigurasi server RTMP:
rtmp { server { listen 1935; application live { live on; record off; } } }
Jika diinginkan, Anda dapat mengonfigurasi server HTTP untuk menampilkan statistik .
Dermaga menjelaskan apa lagi yang bisa Anda konfigurasi, benar-benar ada banyak hal. Jika Anda tahu cara melakukannya dengan lebih baik, saya akan dengan senang hati menambahkan bagian tentang konfigurasi server dengan materi dari komentar.
Kami membuatnya nyaman
alias rtmp-start="sudo /usr/local/nginx/sbin/nginx" alias rtmp-stop="sudo /usr/local/nginx/sbin/nginx -s stop" alias rtmp-status="cat /usr/local/nginx/logs/nginx.pid"
Apa yang harus dilakukan dengan server RTMP?
Kirim streaming ke sana dari aplikasi seluler di rtmp://< IP>:1935/live/habr
mana live
adalah nama aplikasi RTMP di konfigurasi nginx, dan habr
adalah Kunci Stream , yang harus diubah untuk kamera yang berbeda.
Jika Anda telah mengonfigurasi untuk menampilkan statistik (dan tidak lupa mengubah jalur ke file stat.xsl
), periksa apakah streaming telah tiba (di http: // localhost: 8080 / stat ).
Terhubung ke semua stream OBS Studio.


KEUNTUNGAN !!!
Jelas, server tidak hanya lokal, tetapi juga dapat diakses dari luar, yang memungkinkan Anda melakukan hal yang sama, tetapi tidak melalui Wi-Fi, tetapi melalui Internet. Anda dapat membuat analog Anda sendiri dari aliran grup Instagram, dan secara umum, kemungkinan tidak terbatas))
Hanya itu semua
Ada beberapa hal lagi yang saya pelajari dari kesalahan dan ingin saya bagikan:
- Dimungkinkan dan perlu untuk mengubah bitrate target aliran akhir selama siaran, dan menyesuaikan dengan konektivitas. Restream, misalnya, menggambar grafik keren yang menunjukkan seberapa banyak Anda perlu menurunkannya. Ada Permintaan Tarik untuk secara otomatis memilih bitrate , tetapi terhenti ((
- Ada parameter Interval Keyframe , dan harus lebih dari satu detik (ini harus secara manual diatur dalam versi Advanced dari pengaturan Output ). Restream berbicara tentang ini hanya setelah akhir aliran, UX adalah yang terbaik! )))
- Ada Permintaan Tarik lain yang sangat berguna , di mana saya berpartisipasi, dan untuk itu saya secara aktif tenggelam, tetapi juga tampaknya terhenti, meskipun pengelola baru-baru ini mengingat dan memikirkannya kembali. Seperti, pliz, jika Anda juga berpikir bahwa tidak adanya tombol Monitor pada saluran audio mengerikan.
Sekarang semuanya sudah pasti, terima kasih atas perhatian Anda ^ _ ^
PS
Bagi mereka yang masih mencoba membangun nginx untuk Venda yang ada di mana-mana, inilah rake yang telah saya jalani, pencarian itu ternyata, saya tidak takut dengan proses ini dengan sia-sia:
- Diperlukan untuk mengambil kode sumber PERSIS dari Mercurial (ada baiknya ada tombol "unduh zip"), tidak ada
src\os\win32
di arsip dari situs. Jika Anda memiliki kode sumber dari situs, akan ada kesalahan don't know how to make 'src/os/win32/ngx_win32_config.h'
. - Butuh MinGW kuno dari sini dan bukan
sedikit kurang kuno MSYS2. - Saat memasang
mingw-developer-toolkit
Anda harus menghapus kotak centang dari Perl. Perl harus Windows. - Jawaban ini sangat membantu.
- Saat kompilasi,
rc.exe
digunakan dari %ProgramFiles(x86)%\Windows Kits\10\bin\10.0.16299.0\x64
, Anda perlu menambahkan folder ini secara manual di PATH - Hal ini diperlukan untuk menghapus flag
-WX
dari CFLAGS
di Makefile sehingga vorings tidak mengganggu kompilasi, ada vorings di 1.15.3 ...
Total, saya mendapat sesuatu seperti ini: