一、什麼是媒體服務器
媒體服務器這個名詞最初來自於NGN(下一代網絡),在軟交換設備控制下提供IP網絡上各種媒體資源管理功能,含視頻、音頻、圖片、圖文消息等等。
後來逐漸演化爲流媒體服務器,從而提供以流的方式推送、存儲、拉動媒體資源,尤其是實時和準實時的音視頻資源。
應用領域包括視頻直播、視頻點播、短視頻、視頻會議、遠程教育、遠程醫療等。
著名的開源媒體服務器,包括Red5 Server、Live555、EasyDarwin、Open Streaming Server、Nginx+RTMP等。
二、什麼是Nginx
當前(2020),web服務大量使用Nginx作爲反向代理服務器。
Nginx最初由俄國人伊戈爾·賽索耶夫在2004年開發,採用BSD許可證。
除了反向代理外,Nginx還是一個輕量級web server,是Apache web server的替代者,併發連接數可以達到5萬以上。
另外,Nginx還能被用來搭建負荷均衡服務器和郵件代理服務器。
更主要的是,nginx配合RTMP插件能夠適應直播潮流,成爲性能優良的流媒體服務器。
三、Windows下編譯nginx
1,官網下載地址:http://nginx.org/en/download.html,需要下載源代碼自行編譯。
2,現成的編譯好的發佈版本:
http://nginx-win.ecsds.eu/download/nginx%201.7.11.3%20Gryphon.zip
解壓後放到D:\nginx-1.7.11.3-Gryphon
3,啓動:雙擊啓動或者在cmd下輸入start nginx
4,驗證:
(1)在瀏覽器中輸入http://localhost/
(2)tasklist /fi "imagename eq nginx.exe"
(3)netstat -ano | findstr "80"
5,修改配置
配置文件是conf\nginx.conf,如果沒有,則把nginx-win.conf拷貝一份,重新命名爲nginx.conf
例如,修改偵聽端口爲8080(默認80):
修改配置後使用nginx -s reload刷新:
四、設置流媒體服務
重新把nginx.conf命名爲nginx-old.conf,把nginx-win-rtmp.conf拷貝一份重新命名爲nginx.conf。
檢查如下配置:
重啓:
nginx.exe -s stop
start nginx
也可以用如下命令:
nginx.exe -s quit
Start nginx
另,直接終止進程再啓動也是可行的:
驗證:
五、FFMPEG推流
1,什麼是FFMPEG
略
2,下載
解壓到:D:\ffmpeg
3,設置
設置環境變量,首先設置FFMPEG_HOME
然後修改Path:
4,推流
(1)修改nginx配置文件,server_name從localhost改爲本機IP地址(這會解決播放器拉流不正常的情況,一直無法播放視頻的問題)
(2)本地視頻推流指令爲:
ffmpeg.exe -re -i Videos\orange.mp4 -f flv rtmp://127.0.0.1:1935/live/edison
注意:以上指令中最後是rtmp://127.0.0.1:1935/live/edison,其中,rtmp是媒體傳輸協議,192.168.41.3是媒體服務器地址,1935是媒體服務器偵聽端口,live是RTMP媒體服務名稱,edison是應用名稱,每次推流應用名稱應不同纔行。
使用VLC Media Player測試:
(3)本地攝像頭和麥克風推流指令
ffmpeg -f dshow -i video="Integrated Camera" -f dshow -i audio="麥克風陣列 (英特爾® 智音技術)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.41.3:1935/live/home
注意:以上指令中最後是rtmp://192.168.41.3:1935/live/home,其中,rtmp是媒體傳輸協議,192.168.41.3是媒體服務器地址,1935是媒體服務器偵聽端口,live是RTMP媒體服務名稱,home是應用名稱,每次推流應用名稱應不同纔行。
5,查詢本地麥克風和攝像頭的方法:
(1)使用ffmpeg指令
ffmpeg -list_devices true -f dshow -i dummy
(2)“計算機管理”查設備屬性
當ffmpeg指令查詢結果有亂碼時,可以使用“計算機管理”的設備屬性來查看和拷貝:
選“友好名稱”,拷貝下面的值。
(3)查詢指定攝像頭信息指令
ffmpeg -list_options true -f dshow -i video="Integrated Camera"
(4)查詢指定麥克風信息的指令
ffmpeg -list_options true -f dshow -i audio="麥克風陣列 (英特爾® 智音技術)"
(5)測試指定攝像頭是否可用
ffplay -f dshow -i video="Integrated Camera" (或者ffplay -f vfwcap -i 0)
六、VLC播放器和拉流
拉流和推流的關係如下圖:
播放端爲PC,可採用VLS Media Player,下載地址爲:
播放端爲Android,可採用ijkplayer
還可以採用JavaScript播放器,例如:jwplayer,
jwplayer官網:
Jwplayer下載地址:
https://webscripts.softpedia.com/script/Multimedia/Video/JW-FLV-Media-Player-41172.html