搭建思路:
1. 采用Nginx+nginx-rtmp-module搭建rtmp服務(wù)端
2. ffmpeg作為推送端,將視頻流轉(zhuǎn)為adobe flash flv格式封裝后推送到nginx rtmp服務(wù)
Nginx服務(wù)端:
nginx下載:
nginx-rtmp-module下載:
編譯安裝:
添加rtmp配置:
啟動(dòng)服務(wù):
配置Nginx流媒體服務(wù)器
nginx服務(wù)器有一個(gè)配置文件叫做nginx.conf ,這個(gè)文件默認(rèn)是位于/usr/local/nginx/conf 目錄下。
我將這個(gè)文件改成這樣:
其中rtmp就是rtmp服務(wù)器模塊,端口是1935,Application我理解為一個(gè)路徑??梢酝ㄟ^訪問rtmp://localhost/videotest 來訪問videotest這個(gè)資源。live on 表示這是實(shí)時(shí)的傳輸,這不同于點(diǎn)播,點(diǎn)播就好比我在某視頻網(wǎng)站上想看一個(gè)視頻,無論我什么時(shí)候去點(diǎn)擊,它會(huì)從頭開始播放。而實(shí)時(shí)傳輸(直播),就是好比看電視,我在19:20去打開電視(打開直播路),視頻不會(huì)從頭開始播放,而是從當(dāng)前(19:20)的視頻數(shù)據(jù)開始播放。
除了配置rtmp服務(wù)器,還可以配置HTTP和HTTPS服務(wù)器。這方面我還沒有深入去了解。更多關(guān)于nginx服務(wù)器和其配置方式,請(qǐng)閱讀nginx官網(wǎng) 。
安裝ffmpeg
首先安裝h264 視頻編解碼庫:
sudo apt-get update
sudo apt-get install libx264-dev
安裝ffmpeg ,依次輸入以下命令:
wget http://ffmpeg.org/releases/ffmpeg-3.0.9.tar.bz2
tar jxvf ffmpeg-3.0.9.tar.bz2
cd ffmpeg-3.0.9/
sudo ./configure –enable-shared –enable-pthreads –enable-gpl –enable-avresample –enable-libx264 –enable-libtheora –disable-yasm
動(dòng)態(tài)
sudo ./configure –disable-shared –enable-static –enable-pthreads –enable-gpl –enable-avresample –enable-libx264 –enable-libtheora –disable-yasm
靜態(tài)
如果出現(xiàn)錯(cuò)誤 ,可能需要安裝sudo apt-get -y install libtheora-dev
sudo make
sudo make install
其中sudo make 這個(gè)過程會(huì)比較久。安裝完ffmpeg之后,在命令行中輸入ffmpeg:
如果出現(xiàn)找不到庫,說明是使用動(dòng)態(tài)編譯,庫的路徑無法找到。
因?yàn)檫@里我重新用靜態(tài)命令編譯一遍,然后就成功了。
推流與拉流
配置好nginx.conf之后,重新啟動(dòng)sudo /usr/local/nginx/sbin/nginx
然后在命令行中使用 ffmpeg 進(jìn)行推流:
ffmpeg -re -i /home/hjh/nginx/video.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost:1935/videotest/test
/home/hjh/nginx/video.mp4自己需要播放的文件。
在本機(jī)器上用vlc打開串流rtmp://localhost:1935/videotest/test如圖
這里有一個(gè)bug,局域網(wǎng)中其他電腦訪問服務(wù)器需要使用:
rtmp://10.150.90.230:1935/videotest/test
10.150.90.230 表示服務(wù)器的IP地址,并且需要加入端口號(hào),否則只能在本機(jī)服務(wù)器上播放,其他電腦如法播放。