Sadece kullan! Basit bir canlı yayın sistemi oluşturmak için birkaç adım | Güç Projesi

Yazar | mind_programmonkey

Sorumlu Editör | Wu Xingling

Üretildi | CSDN Blogu

Bu sefer, basit bir canlı yayın efekti elde etmek için bir medya akışı sunucusu oluşturmak için Ngix + RTMP + FFmpeg kullandık.

Nginx, hafif bir web sunucusu / ters proxy sunucusu ve e-posta (IMAP / POP3) proxy sunucusudur. nginx-rmtp-module, Nginx sunucusu için bir akış eklentisidir. Nginx, RTMP modülü aracılığıyla RTMP hizmeti sağlar.FFmpeg, bir RTMP akışını Nginx'e iter ve ardından müşteri gerçek zamanlı video akışını izlemek için Nginx'e erişir.

Ne olursa olsun, bir gülümseme ile yüzleşin!

Güncel canlı yayın ürünleri türleri

  • Pan-eğlence canlı yayın

Huajiao ve Yingke gibi eğlence çapaları ve Douyu gibi oyunların canlı yayını

  • Gerçek zamanlı etkileşimli canlı yayın

DingTalk, Tencent konferansı gibi sesli ve görüntülü konferans, eğitim canlı yayını vb.

1. Mevcut pan-eğlence canlı yayın mimarisi

2. Gerçek zamanlı etkileşimli canlı yayın mimarisi

Tamamlayıcı bilgi: CDN ağı

1. Web sitesinin genel erişim modelleri

Önce web sitesinin genel erişim düzenine bakın.

Bir kullanıcı bir web sitesini ziyaret etmek istediğinde, bu web sitesinin alan adını belirtin, DNS bu alan adını bir adrese çözümler ve ardından kullanıcı bu adresi ister ve bir web sayfası döndürür. Tıpkı bir şey satın almak istiyorsanız, önce mağazanın yerini bulmanız, ardından istediğiniz şeyi bulmak için mağazaya gitmeniz ve sonunda ürünü eve götürmeniz gerekir.

CDN: İçerik Dağıtım Ağı, içerik sağlama (dağıtım) ağı.

2. Optimize etmek için "ara depo" kullanın

Örneğin, bir şey satın almak için sipariş vermek üzere bir e-ticaret web sitesine giderseniz, bu ürün e-ticaret merkezinin merkez deposundan teslim edilmeli mi? Görünüşe göre bu temelde durumdur, her sipariş ayrı ayrı teslim edilir, bu nedenle bebeğinizi teslim almanız uzun zaman alabilir. Ancak daha sonra e-ticaret sitesinin lojistik sistemi daha akıllı hale geldi ve sadece merkezde malları teslim edebilecek merkezi depo yerine ülke çapında birçok depo kurdular.

İstatistiklere göre, e-ticaret siteleri, Pekin, Şanghay, Guangzhou, Shenzhen, Hangzhou ve diğer yerlerde nispeten uzun depolama süresine sahip kaç kitap, tuvalet kağıdı, çanta, elektrikli alet ve diğer öğelerin satılabileceğini muhtemelen biliyor. Bu ürünlerin merkezi depodan gönderilmesine gerek yoktur, bu nedenle normal zamanlarda çeşitli depolara dağıtılabilir.Müşteriler sipariş verir, en yakın depoya gönderir ve ertesi gün teslim alır.

Bu şekilde, kullanıcı deneyimi büyük ölçüde geliştirilir.

3. Ağdaki "Yakında Teslimat"

Dünyada çok fazla veri merkezi var, nerede çevrimiçi olursanız olun, temelde çok uzakta olmayan veri merkezleri vardır. Verilerin bir kısmını önbelleğe almak için bir önbellek kümesi oluşturmak için bu veri merkezlerinde birkaç makine dağıtmak mümkün mü, böylece kullanıcılar verilere eriştiklerinde yakındaki bilgilere erişebilirler mi?

Elbette mümkün. Her veri merkezindeki çeşitli yerlere dağılmış düğümlere kenar düğümleri denir.

Kenar düğümlerinin sayısı nispeten büyük olduğu için, ancak her bir kenar düğümünün küme boyutu nispeten küçük olduğundan, her şeyi önbelleğe almak imkansızdır, bu nedenle vurulmayabilir. Bu şekilde, kenar düğümlerin üzerinde bölgesel düğümler olacak, ölçek daha büyük olacak, önbelleğe alınan veriler daha fazla olacak ve isabet olasılığı daha büyük olacaktır. Bölgesel düğümün üzerinde, daha büyük ölçekli ve daha fazla önbelleğe alınmış veriye sahip merkezi düğüm bulunur. Hala özlüyorsa, kaynak web sitesine geri dönmelisiniz.

Ngix + RTMP + FFmpeg basit bir akış sunucusu oluşturur

Nginx, hafif bir web sunucusu / ters proxy sunucusu ve e-posta (IMAP / POP3) proxy sunucusudur. nginx-rmtp-module, Nginx sunucusu için bir akış eklentisidir. Nginx, RTMP modülü aracılığıyla RTMP hizmeti sağlar, FFmpeg bir RTMP akışını nginx'e iter ve ardından müşteri gerçek zamanlı video akışını izlemek için Nginx'e erişir.

Öyleyse, bir sonraki adım ortamı kurmak, git, git, git! ! ! !

Hızlı bir şekilde indirmek için yansıtma kaynağını değiştirebilirsiniz. Ubuntu apt-get yerli ayna kaynağı değişimi https://blog.csdn.net/qq_21095573/article/details/99736630

1. Nginx'e dayalı Linux RTMP hizmet yapısı

a. nginx'i indirin

wget

b. nginx'i açın

tar xvf nginx-1.15.3.tar.gz

c. Nginx rtmp modülünü indirin

wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz

d. Fermuarı açın

tar xvf v1.2.1.tar.gz

e. nginx'i derlemek için gerekli kitaplıkları kurun

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

f. nginx dizini yapın

cd nginx-1.15.3

g. Yürütme # - rtmp modül dizinine işaret edecek modül ekle

./configure --prefix =. / bin --add-module = .. / nginx-rtmp-module-1.2.1

h. Mevcut dizinin bin dizininde derleyin ve kurun

makemake install

Başlamak için mevcut dizinde bin / sbin / nginx'i çalıştırın

bin / sbin / nginx -s durdurma

Tarayıcıya [IP] girin: 8080

Not:

Dizinin ve bağlantı noktasının meşgul olup olmadığına dikkat edilmelidir.Örneğin, 8080 bağlantı noktası meşgulse, 8081'e değiştirilebilir ve ardından bağlantı noktasının açılması gerekir.

Liman işgal kontrolü: lsof -i: 8080

2. FFmpeg

FFmpeg'i kurmanın iki yolu vardır: biri basit, diğeri biraz daha karmaşıktır.

a. Basit kurulum yöntemi

Basit olanlarla başlayalım, üç adım

İlk adım: kaynak ekleyin.

sudo eklenti-apt-deposu ppa: djcj / hybrid

Adım 2: Kaynağı güncelleyin.

sudo apt-get güncellemesi

Üçüncü adım: indirin ve kurun.

sudo apt-get install ffmpeg

b. Karmaşık kurulum yöntemi

İlk adım, kütüphanenin kurulumunu desteklemektir.

sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0 yapılandırma texinfo wget zlib1g-dev

apt libavformat-dev yüklemek apt libavcodec-dev yüklemek apt libswresample-dev yüklemek apt libswscale-dev yüklemek apt libavutil-dev yüklemek apt libsdl1.2-dev yüklemek sudo apt-get install yasm

İkinci adım, x264

gir klon https://github.com/qupai/x264 cd x264 ./configure --enable-shared --enable-pthread --enable-pic Yapmak kurmak yap

Üçüncü adım, FFmpeg

Resmi web sitesinden indirin:

tar -jxvf ffmpeg-4.1.tar.bz2 cd ffmpeg-4.1 ./configure --enable-libx264 --enable-gpl --enable-shared --extra-cflags = -I / usr / local / include --extra-ldflags = -L / usr / local / lib --enable- resim Yapmak sudo make install dışa aktar LD_LIBRARY_PATH = / usr / local / ffmpeg / lib: $ LD_LIBRARY_PATH ldd ffmpeg

Bu problemle karşılaşırsanız:

ffmpeg: paylaşılan kitaplıkları yüklerken hata: libavdevice.so.58: paylaşılan nesne dosyası açılamıyor: Böyle bir dosya veya dizin yok

-sudo find / -name libavdevice.so.58 # Dosyanın ilgili adresini bulun -sudo vim /etc/ld.so.conf # / usr / local / lib dosyasının sonuna bir satır ekleyin -sudo ldconfig # Yukarıdaki dosyayı etkili hale getirmek için bu cümleyi yürütün

Ffmpeg kodlayıcılarını yeniden çalıştır | grep x264 kurulumun başarılı olduğunu görecektir

Kurulum başarılı olduktan sonra, ffmpeg -version etkisini doğrulayın.

3. İtin ve çekerek başlatın

İtme akışı, toplama aşamasında paketlenmiş içeriğin sunucuya iletilmesi sürecini ifade eder ve ana bilgisayar tarafı, yerel olarak toplanan ses ve video akışını medya sunucusuna iter. Canlı video sinyalinin ağa iletilmesi işlemidir.

Sonraki gösteri:

Ana Windows'taki 1.mp4 ortam dosyasını, Ubuntu sanal makinenin akış ortam sunucusu Nginx'e itin ve ardından bu işlemi ffplayer aracılığıyla yürütmek için akışı ubuntu'da aşağı çekin.

Windows altında akışı itin:

ffmpeg -i 1.mp4 -f flv rtmp: //192.168.8.169/live/room

Ubuntu'da Nginx hizmetini açın

Aşağıdaki içerik, RTMP işlevini artırmak ve Nginx'in canlı yayın durumunu izleme işlevine sahip olmasını sağlamak için nginx.conf dosyasına yeni eklendi:

Bundan sonra servisi başlatın

bin / sbin / nginx

ubuntu akışı çek

ffplay rtmp: //192.168.8.169: 1935 / canlı / oda

Sen bittin! ! !

Bu sefer durum bu olacak.

Telif hakkı bildirimi: Bu makale, CSDN blog yazarı "mind_programmonkey" in orijinal makalesidir ve CC 4.0 BY-SA telif hakkı sözleşmesine uygundur. Lütfen orijinal kaynak bağlantısını ve yeniden yazdırmak için bu bildirimi ekleyin.

Orijinal bağlantı: https://blog.csdn.net/Mind_programmonkey/article/details/104584444

Changde Trafik Polisi Müfrezesi "Festivalimiz Ching Ming" Tema Aktivitesini Başlattı
önceki
Bulut yerelinin temel taşı; tek bir makalede hangi kapsayıcıların, Docker'ın ve Pod'un olduğunu anlayın
Sonraki
Son 10 yılda çaylak programlama dili PK, Seçin
Turing Ödülü açıklandı! Bilgisayar grafiklerinin öncüleri Hanrahan ve Catmull ödüller kazandılar, iki Hollywood 3D animasyon gişe rekorları kıran teknoloji gazisini tebrik etti
Sohbet robotu inişi ve gelişmiş gerçek savaş | Milyonlarca insan AI öğreniyor
Sezgisel diyalogda bilgi yönetiminin ayrıntılı açıklaması | Bir milyon insan AI öğreniyor
Transformer'in yeni sinir ağının makine çevirisinde uygulanması | milyonlarca insan yapay zekayı öğreniyor
GitHub etkin noktalarına hızlı bir genel bakış: inanılmaz tarayıcı Browser-2020 Weekly, Star'ı 3000'in üzerine çıkarıyor
Bu makaleyi okuduktan sonra, Spring Security | The Force Project hakkında bir fikir edinebilirsiniz.
Taş çekiç! Python bu yıl zorlanacak mı? Programcı: Ben deliyim
Sayısız Java GC makalesi okudunuz, bu 5 soruyu bilmiyor olabilirsiniz
Veri analisti ve algoritma mühendisi, Python'da doğan programcılar nasıl seçim yapar?
Üç büyük operatör, yeni ve eski kullanıcı paketlerinde farklı haklar sorununu çözecek; Luo Yonghao, Douyin ile işbirliği yapıyor; Git 2.26 yayınlandı | Geek Headlines
İnsan-Bilgisayar Etkileşimi İnsan Hayatını Nasıl Değiştirir | Milyonlarca İnsan Yapay Zekayı Öğreniyor
To Top