日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[SRS+docker]实现直播服务器 2 SRS单机直播能力验证

發(fā)布時間:2024/3/12 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [SRS+docker]实现直播服务器 2 SRS单机直播能力验证 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

1 前言

2 能力要求

3 基礎(chǔ)環(huán)境

4 環(huán)境搭建

4.1 說明

4.1.1 知識儲備

4.1.2 網(wǎng)絡(luò)環(huán)境

4.2 SRS版本選型

4.2.1 SRS-github

4.3 搭建模式

4.4 搭建流程

4.4.1 安裝desktop

4.4.2 搭建centos7

4.4.3 啟動centos7容器

4.4.4 進入容器

4.4.5 安裝編譯環(huán)境

4.4.6拉取源碼

4.4.7 編譯源碼

4.4.8 srs配置文件

4.4.9 srs服務(wù)端口

4.4.10?啟動SRS

5 直播測試

5.1 obs

5.1.1 簡介

5.1.2 安裝

5.1.3 使用

5.2 vlc安裝

5.2.1 簡介

5.2.2 安裝

5.2.3 使用

6 直播驗證

6.1 推流

6.2 拉流

6.3 直播地址

6.3.1 推流地址

6.3.2 拉流地址

6.4 驗證結(jié)果

6.4.1 遺留問題


1 前言

上一篇已經(jīng)簡單介紹了SRS的一些基本信息,以及使用SRS需要考慮的一些設(shè)計約束。

上一篇直達:傳送門

2 能力要求

SRS作為一個直播技術(shù)方案,那么直播的最基本能力必須要滿足。因此這一篇就是來搭建一個單機版的直播服務(wù)器,驗證SRS的直播能力。

3 基礎(chǔ)環(huán)境

組件

描述

備注

Docker

Docker容器模擬服務(wù)器

暫時沒有多余閑置的服務(wù)器,因此利用docker在本機搭建比較省資源,同時為后續(xù)集群做準備

Centos7.0

SRS依賴linux環(huán)境

也可以使用ubuntu

C++編譯環(huán)境

安裝C++的編譯環(huán)境

SRS是基于C++編寫的

Git

代碼檢出工具

SRS4.x版本擁有最全的直播協(xié)議,該版本沒有安裝版,只能通過下載源碼自行編譯。

4 環(huán)境搭建

4.1 說明

4.1.1 知識儲備

作者本地已經(jīng)安裝好了desktop,所以docker環(huán)境具備了。這邊就不分享docker環(huán)境怎么搭建的教程了。想看的可以查看:《docker從0到1》

4.1.2 網(wǎng)絡(luò)環(huán)境

srs的很多資料,都需要訪問到github,所以大家要想辦法弄出可以訪問github的網(wǎng)絡(luò)環(huán)境。筆者在學(xué)的過程,也針對這個問題做了解決:github在gitee上都有對應(yīng)的映射,所以通常只要把github的地址里頭的github改成gitee就可以了。下面在分享過程也會在附上github地址的同時盡可能附上對應(yīng)的gitee地址。

4.2 SRS版本選型

srs分為安裝版和源碼版,筆者在使用過程一開始有使用安裝版測試過,但是裝好之后就不知道該怎么用了,最主要的是安裝版的網(wǎng)上的資料比較少,所以最終筆者選擇的是SRS的源碼版。

如果想要了解srs安裝版的,作者附上安裝版的其他作者的地址,有興趣的可以去查看(注:筆者操作過去之后,就沒有進一步的成長了,因為SRS的內(nèi)容很多,要研究的也很多,使用安裝版,就不知道怎么繼續(xù)了):

https://cloud.tencent.com/developer/article/1505068?from=article.detail.1408113

4.2.1 SRS-github

要用srs源碼,那么勢必少不了SRS的官方github地址了:

https://github.com/ossrs/srs(對應(yīng)gitee:https://gitee.com/ossrs/srs)?

筆者在編寫博客的時候,srs的最新版是4.0.146版本,經(jīng)過查找資料發(fā)現(xiàn)srs,僅在4.0之后的版本支持webrtc,所以筆者選擇最新版的srs來搭建。

4.3 搭建模式

SRS本身有docker的鏡像,所以其實如果利用docker來安裝srs的話,最好的方式,應(yīng)該是直接利用docker的srs鏡像就可以了。但是作者考慮到:未來實際應(yīng)用的時候服務(wù)器可能是一個干凈的linux系統(tǒng),因此并不用SRS的docker鏡像來安裝,而是從搭建centos,到安裝SRS...這樣一個步驟來。

?注:上面的一些步驟,大家乍一看,可能看不懂是什么意思,其實沒有關(guān)系的,跟著我的教程走一著就好了,因為里頭的諸如C++編譯環(huán)境之類的,筆者也不是很懂。

4.4 搭建流程

4.4.1 安裝desktop

請參考:《docker從0到1》

4.4.2 搭建centos7

安裝好desktop之后,這個時候window電腦上就有了docker的全局命令了。

打開cmd。輸入docker pull centos:7。

等拉取完畢之后,通過docker images命令驗證centos7鏡像是否下載下來了。

4.4.3 啟動centos7容器

接下來就是啟動一個centos7的docker容器,因為srs需要用到1935 8080 1985 80 8000 這幾個端口,所以必須要映射出來(這些端口做啥用的,下面會解釋到。),其次,srs要作為后臺服務(wù)來運行,因此需要設(shè)置以特權(quán)模式啟動容器。啟動命令如下:

docker run -d??-p 1935:1935 -p 8080:8080 -p 1985:1985 -p 80:80 -p 8000:8000/udp ??--privileged=true 5de52d772a3c /usr/sbin/init

注:5de52d772a3c 是centos7的imageId。

4.4.4 進入容器

docker exec -it xxxxx /bin/bash

注:xxxxxx是containerId

4.4.5 安裝編譯環(huán)境

逐個執(zhí)行下面的yum命令,來安裝所有的需要的編譯環(huán)境。

# 安裝編譯環(huán)境 yum -y install gcc gcc-c++ # 安裝編譯環(huán)境 yum install -y patch # 安裝編譯環(huán)境 yum install -y unzip # 安裝編譯環(huán)境 yum -y install gcc automake autoconf libtool make # 安裝 git yum install -y git

4.4.6拉取源碼

按照下面的順序依次執(zhí)行命令,之后就會在/home/git/目錄下下載下來srs的源碼。

注意:拉取過程跟網(wǎng)絡(luò)環(huán)境有很大的關(guān)系,假如運行到git clone...的時候,出現(xiàn)失敗的情況,那么要多試幾下,自然就會成功了。

# 創(chuàng)建 git 數(shù)據(jù)目錄 mkdir -p /home/git# 訪問 git 數(shù)據(jù)目錄 cd /home/git# 從碼云拉代碼 git clone https://gitee.com/winlinvip/srs.oschina.git srs && ls# 查看碼云代碼 cd srs/trunk && ls# 切換到官方 git git remote set-url origin https://github.com/ossrs/srs.git && ls# 更新代碼 git pull# 切換到 Develop 分支 git checkout develop && ls# 如果要查看所有發(fā)布的git版本可以使用 git tag

4.4.7 編譯源碼

編譯過程是c++的編譯過程,不要慌,就是一條命令的事,沒啥大不了的。

注意:上面拉取源碼的時候,我們已經(jīng)cd到了/home/git/srs/trunk。基于這個執(zhí)行下面的命令:

./configure --with-hls --with-ssl --with-http-server --with-http-callback --with-http-api --with-ingest --with-stream-caster && make

?編譯之后,會在文件夾下新增一些文件或者文件夾,比如會新增objs文件夾,下面srs啟動要依賴這個。

4.4.8 srs配置文件

srs是根據(jù)配置文件來啟動的,選擇不同的文件,srs就會以不同的協(xié)議和配置來啟動服務(wù)。srs的配置文件在/home/git/srs/trunk/conf下面。基本上可以按照這么一個規(guī)律來將配置文件進行分類:

配置文件名包含此時srs
rtc以webRTC協(xié)議啟動,提供webRTC服務(wù)
flv以http-flv協(xié)議啟動,提供flv服務(wù)
hls以hls協(xié)議啟動,提供hls服務(wù)
其他,如rtmp以rtmp協(xié)議啟動,提供rtmp服務(wù)

4.4.9 srs服務(wù)端口

上面,我們有講到需要對srs暴露幾個接口,那么為什么暴露的是這么幾個接口呢?那么需要稍微了解下srs的服務(wù)有哪些,分別有什么用。

端口

服務(wù)

說明

1935

RTMP服務(wù)

RTMP推流

RTMP拉流

8080

FLV服務(wù)

FLV拉流

HLS服務(wù)

HLS拉流

Rtc播放器

http://localhost:8080/players/rtc_player.html

1985

控制臺

SRS控制臺

eg:http://192.168.211.4:1985/console

srs內(nèi)置api

比如webRTC播放的時候需要用api去初始化

8000

Udp服務(wù)

WebRTC使用udp播放,udp默認8000端口

80

待補充

待補充

4.4.10?啟動SRS

srs運行的模式非常多,比如基于rtmp,rtc,hls...,現(xiàn)在講這個,可能大家聽不懂,先都不用管,直接在上一步所在的目錄運行:

./objs/srs -c ./conf/rtc2rtmp.conf

不出意外的話,srs應(yīng)該是啟動成功了。

上面選擇rtc2rtmp.conf配置文件來啟動的原因是為后面的講解webRTC協(xié)議做準備。

至此,srs的環(huán)境搭建好了。整個環(huán)境都是在centos7里頭完成。下面就要開始聯(lián)動srs來實現(xiàn)直播了。

5 直播測試

5.1 obs

5.1.1 簡介

Open Broadcaster Software是一個免費的開源的視頻錄制和視頻實時流軟件。其有多種功能并廣泛使用在視頻采集,直播等領(lǐng)域。現(xiàn)在很多直播的軟件都是使用obs來采集直播端的視頻,然后推送到直播服務(wù)器,再由直播服務(wù)器將視頻流推送到客戶端進行播放。

5.1.2 安裝

官網(wǎng)地址為:https://obsproject.com/zh-cn/download

從官網(wǎng)地址可以下載對應(yīng)的obs軟件下來,安裝即可。

5.1.3 使用

obs的功能很強大,可以采集電腦攝像頭的實時視頻,也可以播放視頻文件,或者直播電腦桌面等,而且這些視頻源可以合成再直播。

重點查看下面截圖里頭圈起來的幾個功能:

上圖里頭箭頭指向的幾個功能最重要。其中設(shè)置功能可以設(shè)置將視頻推給哪個直播服務(wù)器:?

?其中服務(wù)器的ip改成你本機的ip,注意是本機哦,不是docker-centos7容器的ip,因為我們在啟動容器的時候已經(jīng)將容器里頭的端口映射出來了。其他的包括串流密鑰都保持不變。至于為什么要這么設(shè)置,下面會解釋的。

整個obs使用過程如下:

  • 進入設(shè)置,設(shè)置推流的地址
  • 設(shè)置視頻來源,最簡單的就是設(shè)置顯示器采集
  • 點擊開始推流
  • 然后查看srs的日志,就可以看到流推過去了。

    5.2 vlc安裝

    5.2.1 簡介

    簡單、快速、強大的媒體播放器。

    VLC Media Player 是一款可播放大多數(shù)格式,而無需安裝編解碼器包的媒體播放器。可以播放 MPEG-1、MPEG-2、MPEG-4、DivX、DVD/VCD、數(shù)字衛(wèi)星頻道、數(shù)字地球電視頻道(digital terrestrial television channels)、在許多作業(yè)平臺底下透過寬頻 IPv4、IPv6 網(wǎng)絡(luò)播放線上影片;此軟件開發(fā)項目是由法國學(xué)生所發(fā)起的,參與者來自于世界各地,設(shè)計了多平臺的支持,可以用于播放網(wǎng)絡(luò)串流及本機多媒體檔案之播放。

    5.2.2 安裝

    官網(wǎng)地址:https://vlc-media-player.en.softonic.com/

    從官網(wǎng)地址里頭下載vlc軟件,并安裝

    5.2.3 使用

    我們通過obs推流,然后視頻流會跑到直播服務(wù)器,這個時候我們要通過vlc去拉取在直播服務(wù)器上的視頻流到本地,然后通過vlc播放出來。按照如下幾個步驟就可以播放了:

    選擇打開網(wǎng)絡(luò)串流:

    輸入網(wǎng)絡(luò)url,注意跟推流的url是一樣的:

    ?

    ?然后點擊播放就可以播放了。

    6 直播驗證

    在obs和vlc里頭配置地址的時候,都是以rtmp開頭的,說明推流和拉流都是使用rtmp協(xié)議。

    6.1 推流

    推流的概念,就是往直播服務(wù)器推送視頻流,obs就是推流的軟件

    6.2 拉流

    拉流的概念,就是往直播服務(wù)器拉取視頻流,vlc就是拉流的軟件

    6.3 直播地址

    地址涉及到兩種類型的地址,第一種是推流的地址,還有一個是拉流的地址。

    通常,我們都是使用rtmp的協(xié)議來進行推流的,拉流的格式比較多,比如我們可以使用rtmp的協(xié)議拉流,也可以使用hls協(xié)議、flv協(xié)議、rtc協(xié)議(即webrtc)。另外拉流和推流的協(xié)議沒有要求說必須一樣。上面的例子,我們使用rtmp來進行推流和拉流。

    不管是哪種協(xié)議,地址的格式都是一樣的。下面分析下直播的地址。

    6.3.1 推流地址

    推流地址決定了拉流的地址,這邊地址指的是不包含協(xié)議的部分。

    以上面的rtmp協(xié)議推流為例子:

    服務(wù)器:rtmp://192.168.211.3:1935/live

    串流密鑰:1

    其中服務(wù)器里頭的live是自定義的字符串,表示哪個應(yīng)用。串流密鑰也是自定義的字符串,表示哪個流。所以對于一個直播服務(wù)器而言,應(yīng)用名稱和流共同決定了一個唯一的視頻流。

    所以,假如說有兩路直播要同時進行,那么這個時候,你可以通過改變應(yīng)用名稱或者流名稱來新劈一個直播通道。

    需要注意的一點是:協(xié)議只是直播的一種傳輸模式,并不是決定視頻流的要素。

    其次,通常使用rtmp來推流

    6.3.2 拉流地址

    上面說推流地址決定了拉流的地址,指的是推流里頭的應(yīng)用名稱和流名稱。

    因為可能當前有多路直播,那么我們要拉取的是哪一路的直播,那么就要明確我們要拉取的這一路直播的推流地址,然后如下方式來構(gòu)建拉流地址(假如應(yīng)用名稱為live,流為1):

    以rtmp協(xié)議來拉流的地址:rtmp://ip:1935/live/1

    以hls協(xié)議來拉流的地址:http://ip:8080/live/1.m3u8

    以flv協(xié)議來拉流的地址:http://ip:8080/live/1.flv

    以rtc協(xié)議來拉流的地址:webrtc://ip/live/1

    注意:上面的幾種協(xié)議,都可以使用vlc來播放,但是依賴srs的配置,本次案例里頭,我們使用的是rtc2rtmp.conf配置文件,這個配置文件支持rtmp協(xié)議的拉流和rtc協(xié)議的拉流,其他兩種是否支持待驗證。后面會講到使用hls協(xié)議或者是flv協(xié)議來拉流需要用到哪個配置文件

    6.4 驗證結(jié)果

    直播整個體系結(jié)構(gòu)如下:

    ?經(jīng)過驗證得出如下結(jié)論:

  • SRS確實可以作為直播服務(wù)器,
  • 基于RTMP的直播協(xié)議,直播延遲比較高,在6-10s之間
  • 延遲的意思是從obs推流到vlc播放出來的時間間隔
  • 6.4.1 遺留問題

    延遲時間是通過肉眼的方式來觀測,這個其實是不準的,后續(xù)會尋找通過軟件的方式來監(jiān)測延遲的時間的。

    ?下一篇:基于webrtc協(xié)議的SRS低延遲直播研究

    總結(jié)

    以上是生活随笔為你收集整理的[SRS+docker]实现直播服务器 2 SRS单机直播能力验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。