串流媒體伺服器ZLMediaKit與FFmpeg

2023-12-21 18:00:52

串流媒體伺服器ZLMediaKit與FFmpeg

overview

關鍵字:ZLMediaKit、FFmpeg、srt、vlc

如果想快速擁有自己的串流媒體伺服器,那麼可以使用開源專案自己搭建。開源的串流媒體伺服器,在國內,GitHub star數量比較高的:srsZLMediaKit。因為在工作中使用的是Mediakit,因此就介紹此開源串流媒體伺服器。

題外話:聽說有人白嫖價低的雲伺服器,然後就向各個直播平臺全天迴圈播放《周星馳系列》《鐵齒銅牙紀曉嵐》《小牛說電影》等等,聽說收益不錯嘞。

本文就說一下通過ffmpeg向mediakit推流,使用vlc拉取mediakit的視訊流。

環境準備

mediakit

部署時使用docker是最方便的,但是他的docker映象比較大,大約有400~500MB。如果在意大小的話,可以自己編譯。自己編譯的話最終的可執行檔案只有11MB。

#此映象為github持續整合自動編譯推播,跟程式碼(master分支)保持最新狀態
docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master

1935是rtmp,8080是http介面,8443是https,8554是rtsp,10000是rtp,8000是rtc,9000是srt

ffmpeg

https://johnvansickle.com/ffmpeg/ 在此下載合適的版本,安裝好後,使用ffmpeg -protocols檢視ffmpeg支援的協定。檢視他是否支援srt協定,因為我要用srt協定推拉流。

vlc

https://www.videolan.org/vlc/ 下載相應的版本即可。

視訊準備

https://ssyoutube.com/en156Bz/youtube-video-downloader 去YouTube下個好看的視訊吧。

推播視訊流到mediakit

當我們從YouTube下載好喜歡的視訊後,我們可以通過ffmpeg將他推播到mediakit上。比如說我下載了周杰倫的《還在流浪》,然後我以srt協定推播到mediakit上。

./ffmpeg -re -stream_loop -1 -i "/opt/still_wandering.mp4" -c copy -f mpegts 'srt://127.0.0.1:9000?streamid=#!::r=live/test,m=publish'

關於mediakit對於srt支援

然後我們的mediakit就接受到這個srt流了,我們通過呼叫他提供的http介面:getMediaList

https://github.com/ZLMediaKit/ZLMediaKit/blob/master/postman/ZLMediaKit.postman_collection.json 通過下載這個json檔案,可以將他匯入到postman中方便呼叫他的REST介面

mediakit預設設定會將推播到其上的流轉為rtmp、rtsp、hls等協定。我們可以通過他所轉換之後的串流媒體協定再去拉這個流。

vlc拉取視訊流

使用vlc從mediakit上拉流。對於srt協定有些特殊,需要在vlc上設定一下stream引數。

比如我們剛才ffmpeg推流live/test,那麼這樣設定就行。然後填寫srt地址:

192.168.16.152是mediakit伺服器ip。

對於其他協定,比如我們使用rtmp:

rtsp:

conclusion

以上就是本篇內容。主要講述瞭如何擁有一個自己的串流媒體伺服器。使用開源專案ZLMediaKit作為串流媒體伺服器,使用srt協定推流。使用vlc拉取串流媒體伺服器上的實時視訊流。