Springboot、netty實(shí)現(xiàn)的http-flv、websocket-flv流媒體服務(wù)(可用于直播點(diǎn)播),支持rtsp、h264、h265等、rtmp等多種源,h5純js播放(不依賴flash),不需要依賴nginx等第三方,延遲大部分在1-5秒內(nèi)(已經(jīng)支持轉(zhuǎn)復(fù)用,h264的流自動(dòng)轉(zhuǎn)封裝,超低延遲。PS:當(dāng)然還有種更低延遲的不用flv方案沒(méi)時(shí)間寫(xiě)了,但是主要是flv比較大眾,這個(gè)一般也夠用了)。
成品下載-7.16,此版本已不是最新,新版本請(qǐng)自行下載編譯
鏈接:https://pan.baidu.com/s/1kx3pwYVG_HfAt8JmQti86g --來(lái)自百度網(wǎng)盤(pán)超級(jí)會(huì)員V4的分享
PS:項(xiàng)目里已經(jīng)集成最新版編譯好的前端,由于前端只是個(gè)demo,這里是沒(méi)有hls功能的版本,hls前端播放比較簡(jiǎn)單,我就懶得上傳了
流媒體服務(wù)會(huì)綁定兩個(gè)端口,分別為 8866(媒體端口)、8888(web端口,后續(xù)會(huì)做簡(jiǎn)單的管理頁(yè)面) 您只需要將 {您的源地址} 替換成您的,然后放播放器里就能看了
http://localhost:8866/live?url={您的源地址} ws://localhost:8866/live?url={您的源地址} 例如rtsp: http://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102 ws://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102 文件(支持格式參照f(shuō)fmpeg支持的格式): http://localhost:8866/live?url=d:/flv/testVideo.mp4 ws://localhost:8866/live?url=d:/flv/testVideo.mp4 電腦桌面投影(url改成desktop即可): http://localhost:8866/live?url=desktop ws://localhost:8866/live?url=desktop
永久播放還有一種捷徑,就是在播放地址后面加上autoClose=false參數(shù),也會(huì)加入到j(luò)son中。 例如: http://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false ws://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false ### hls播放例子:(注意:hls為http端口8888,并且不支持url后面參數(shù),開(kāi)啟切片后可以播放) http://localhost:8888/hls?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102
參數(shù)加在播放地址url最后面,使用 [&&&] 符號(hào) 例如: http://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false&&&ffmpeg=true ws://localhost:8866/live?url=rtsp://admin:VZCDOY@192.168.2.84:554/Streaming/Channels/102&&&autoClose=false&&&ffmpeg=true ### autoClose=false 設(shè)置為永久播放 ffmpeg=true 使用ffmpeg方式,提高兼容穩(wěn)定性(不支持的流可以試試這個(gè)參數(shù)) //hls=true(目前還不支持此參數(shù),只能api或者網(wǎng)頁(yè)端控制開(kāi)啟)
目前支持??迪鄼C(jī),大華待更新 http://localhost:8888/hk/ctrl?ip=192.168.2.120&op=left&username=admin&password=VZCDOY ip 相機(jī)ip op 操作,up、down、left、right、left_up、left_down、right_up、right_down、big、small username 相機(jī)用戶名 password 相機(jī)密碼 port 控制端口(可不傳)
可以訪問(wèn) http://localhost:8888 具體功能參照截圖
新增流 http://localhost:8888/add?url={您的源地址}&remark={備注} 停止并刪除 http://localhost:8888/del?url={您的源地址} 停止flv推流 http://localhost:8888/stop?url={您的源地址} 開(kāi)啟flv推流 http://localhost:8888/start?url={您的源地址} 開(kāi)啟hls切片 http://localhost:8888/startHls?url={您的源地址} 停止hls切片 http://localhost:8888/stopHls?url={您的源地址} 查看保存的流 http://localhost:8888/list
java -jar EasyMedia-x.x.x-SNAPSHOT.jar 還可以這樣改端口 java -jar -Dserver.port=頁(yè)面端口 -Dmediaserver.port=媒體端口 EasyMedia-x.x.x-SNAPSHOT.jar
有人問(wèn)這個(gè)能否商用,能,本軟件采用MIT寬松協(xié)議,但是注意軟件里面應(yīng)用了一些其他庫(kù)javacv、ffmpeg等均是GPL協(xié)議,需要遵循此協(xié)議,只要不修改javacv、ffmpeg等具有GPL協(xié)議的軟件,其他都能任意改,也可任意商用。
rtmp://58.200.131.2:1935/livetv/ahtv
現(xiàn)在flash已經(jīng)被拋棄,h5播放的時(shí)代,網(wǎng)上實(shí)現(xiàn)大多不是特別完整的(比如拿到一個(gè)rtsp或者rtmp,也不知道怎么在h5頁(yè)面直接播放),當(dāng)然現(xiàn)在直播點(diǎn)播有很多方式,可以通過(guò)nginx帶flv模塊的當(dāng)rtmp服務(wù)、還有srs等流媒體服務(wù),而這里我們通過(guò)javacv來(lái)處理,事實(shí)上javacv性能足夠,底層ffmpeg也是通過(guò)c實(shí)現(xiàn),使用java調(diào)用c跟使用c++去調(diào)用c差不了多少毫秒延遲。java流媒體資料比較少,但從應(yīng)用層來(lái)說(shuō),java有著龐大的生態(tài)優(yōu)勢(shì),配合netty寫(xiě)出的流媒體性能可想而知,而此源碼目前也比較簡(jiǎn)單,可讀性比較強(qiáng),有能力者完全能自主改成java分布式流媒體。隨著人工智能圖像識(shí)別的發(fā)展,從流媒體獲取圖像數(shù)據(jù)是必要條件,有bug希望你們也能及時(shí)提出。
最后感謝eguid的javacv文檔,https://eguid.blog.csdn.net/
聯(lián)系客服