ngnix+rtmpModule+ffmpeg實現直播流媒體伺服器,並於java後臺關聯
1、ngnix+rtmpModule+ffmpeg安裝配置
1.1、安裝環境
1.2、ngnix安裝
ngnix必要庫安裝
yum -y install openssl-devel pcre pcre-devel zlib zlib-devel gcc gcc-c++ glibc glibc-devel
其他缺少的庫根據編譯錯誤提示安裝
ngnix安裝和配置
1、解壓ngnix1.12.2
tar -zxvf ngnix1.12.2.tar.gz
unzip ngnix-rtmp-module.zip2、配置安裝
cd ngnix1.12.2
./configure –add-module=/homt/root/nginx-rtmp-module
make
make install3、修改配置檔案
vi conf/ngnix.conf
#在最外層增加如下配置 rtmp { server { listen 1935; #rtmp配置 application live{ live on; #開始推流回調,url地址為java介面 on_publish http://192.168.1.62:9001/hello; #推流停止回撥,url地址為java介面 on_done http://192.168.1.62:9001/hello
1.3、java後臺
只做了個簡單測試,可根據這些引數完善後臺,實現使用者推流開始把使用者ID和推流地址存入redis或其他高效能儲存,前臺展示當前直播的使用者,點選使用者返回推流地址,實現直播,測試程式碼如下,用spring boot寫的
@RestController
@SpringBootApplication
public class DemoApplication {
@RequestMapping("/hello")
public String hello(HttpServletRequest request) {
Map<String, String[]> parameterMap = request.getParameterMap();
System.out.println("引數數量:"+parameterMap.size());
/**這三個引數是比較有用的引數
tcurl:rtmp地址
name:"rtmp://ngnix伺服器地址/live/id"地址中去除推流地址的最後一個引數,可傳入直播使用者ID
type:推流型別
*/
System.out.println("tcurl:"+request.getParameter("tcurl"));
System.out.println("name:"+request.getParameter("name"));
System.out.println("type:"+request.getParameter("type"));
//列印所有回撥傳過來的引數
for(Entry<String, String[]> entry : parameterMap.entrySet()) {
System.out.println(entry.getKey() + "====================");
for(String str : entry.getValue()) {
System.out.println("\t"+str);
}
}
return "hello world2";
}
public static void main(String[] args) {
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setBanner(new BannerInfo());
app.run(args);
}
}
1.4、測試
1.4.1、使用ffmpeg把一個檔案轉為rtmp流
ffmpeg -re -i F:\1.wmv -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmp://ngnix伺服器地址/live/1
java後臺列印結果
引數數量:9
tcurl:rtmp://192.168.1.10:1935/live
name:1
type:live
app====================
live
flashver====================
FMLE/3.0 (compatible; Lavf58.5.
swfurl====================
tcurl====================
rtmp://192.168.1.10:1935/live
pageurl====================
addr====================
192.168.1.62
clientid====================
410
call====================
publish
name====================
1
1.4.2、然後使用vlc開啟,測試成功
1.5、結尾
到此一個簡單的直播平臺就可以實現了,雖然不是一個完整的例子,但是核心就是以上這些,大家可以在次基礎上擴充套件,因為本人目前並沒有應用場景,只是空閒時間瞭解了一些這塊的一些相關東西,做了一下整理,方便以後使用,有什麼不妥的地方希望大家指正,共同學習