For English description click
Bu proje ffmpeg veya obs üzerinden docker ile oluşturacağınız kendi sunucunuza yayın yapmanızı sağlar.
Env Kullanmak istemedim, çünkü birbirine bağlı bir yapı ve tek bir dosyada bulunuyor bunun için Genel Bilgiler bölümünden ortam değişkenlerine ulaşabilirsiniz. Pull request göndermekten çekinmeyin.
- Yayın Anahtarı:
test?key=supersecret - Rtmp Sunucusu:
rtmp://localhost:1935/live - Frontend Url:
http://localhost:3000 - Backend Url:
http://localhost:8000veyahttp://auth_server:8000
Aşağıdaki özet açıklamalar ile projenin mantığını biraz anlatmak istiyorum.
- Güncel teknoloji kullanmak istememden kaynaklı olarak, front end tarafını nextjs ile yapmaya karar verdim.
- İlerleyen dönemde websocket ile chat sistemi eklenebilir.
- HMR dan faydalanılabilir.
- Backend tarafında, authentication işlemi yaptırıyorum şimdilik.
- Rtmp sunucusuna gelen istekleri, nodejs server ile ara katmana alıyor ve birnevi yayın anahtarı kontrolü yapıyorum.
- Nginx tarafında ise, 1935 portunu ve 8080 portunu açıyorum.
- 1935 portu, obs üzerinden veya ffmpeg ile bana bir videoyu yada canlı olarak kameramı yayınlayabilmemi sağlıyor.
- 8080 portu, oluşan hls dosyalarına erişebilmem için gerekli.
hls_fragment 5s;ile her 5 saniyede bir yeni bir dosya oluşturuyorum.hls_playlist_length 30s;ile play list uzunluğunu belirliyoruz, yani eski oluşan dosyaları biryandan siliyor.- Daha fazla detay için, proje dosyalarından nginx.conf` dosyasına gözatabilirsiniz.
Öncelikle cihazınızda docker olması gerekmektedir.
- Önce Klonlayalım
https://github.com/hopesf/CoderStream.git
- Klonladığınız dizine terminalde gidin.
cd CoderStream- docker ile build alalım.
docker compose build
- docker up komutu ile projeyi başlatalım.
docker compose up
-
Bilgisayardaki mikrofon ve kamera cihazını bulmak için, aşağıdaki komut ile cihazdaki kamera ve mikrofon aygıtlarının sayılarını bulup, aşağıdaki ffmpeg scriptinde
"0:0"alanını, cihazın sayıları ile değiştirin. -
Macbook kullanıcıları için ffmpeg ile, bilgisayar kamerasını kullanarak canlı yayın stream etmek. Gerekli parametreleri kendinize göre değiştirebilirsiniz.
ffmpeg -f avfoundation -list_devices true -i ""
- Not:
192.168.1.158local ip adresiniz sizde muhtemelen farklıdır, bunu öğrenmek için windows'daipconfigdiğer işletim sistemlerindeifconfigile bilgisayarınızın local ip adresini bulup değiştirmeniz önemlidir.
ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0:0" -vcodec libx264 -preset fast -tune zerolatency -b:v 2500k -acodec aac -b:a 192k -ar 48000 -f flv rtmp://192.168.1.158:1935/live/test- Example.mp4 dosyasının adını değiştirerek, bu ffmpeg scriptini kullanabilirsiniz.
ffmpeg -re -i example.mp4 -c:v libx264 -preset fast -c:a aac -f flv rtmp://192.168.1.158:1935/live/test
- Obs programını indirin, Kaynaklar bölümü altında artı ikonuna basın,
Video Yakalama Aygıtıseçeneğini seçin ve açılan pencereden kameranızı seçmeniz gerekli. - Yukarıdaki madde yapıldıktan sonra, kendinizi başarıyla programın ekranında görmelisiniz.
- Sonrasında sağ alt'da bulunan
ayarlarkısmını açalım. Genelbölümünün altında yayın sekmesine tıklayın.Hizmet türünü özel yapmalısınız.Sunucu Adresibölümünertmp://localhost:1935/livertmp serverimizi yazıyoruz.Yayın Anahtarıbölümüne ise belirlediğimiz yayın anahtarını yazabiliriz. (Eğer doğru anahtar girilmezse yayını açamazsınız!)