1. 程式人生 > >SRS+flv.js打造兼容性較高的直播、點播平臺

SRS+flv.js打造兼容性較高的直播、點播平臺

all 我們 conf ram sta 兼容 element 手機 .cn

1、公司之前用的是:

直播:rtmp+jwplayer

點播:h5(mp4文件)

弊端:兼容性差,貌似跟系統版本,瀏覽器,瀏覽器版本都有關。還有就是rtmp推流生成的文件是flv格式,需要轉碼成mp4才能點播。

2、SRS+flv.js的優點:

當然是兼容性大大提高了,在pc端谷歌,火狐都可以播放,手機端火狐可以,谷歌不行,其他沒測。

3、上圖,看看效果:

技術分享

技術分享

樣式什麽的沒添加,官方的demon 直接copy過來。

4、flv.js下載,構建:

Github:https://github.com/Bilibili/flv.js

解壓後進入mater:

構建:

npm install
npm install -g gulp
gulp release  

在dist下生成了我們需要的js

flv.html:

<!DOCTYPE html>
<html>

<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">

</head>

<body>
<script src="flv.min.js"></script>
<video id="videoElement"></video>
<script>
    if (flvjs.isSupported()) {
        var videoElement = document.getElementById(‘videoElement‘);
        var flvPlayer = flvjs.createPlayer({
            type: ‘flv‘,
            url: ‘http://192.168.2.192/live/video.flv‘
        });
        flvPlayer.attachMediaElement(videoElement);
        flvPlayer.load();
        flvPlayer.play();
    }
</script>

</body>

</html>  

type可以是mp4,flv。url的類型要對應,可以是服務器的文件,也可以是rtmp推流的臨時文件。

在這一步可以測試下點播是否正常,文件應該放在http服務器下以http協議訪問,不能是文件形式訪問。http服務器可以是nginx,python,tomcat等都可以

5、如果上一步成功,接下來就是搭建SRS服務器了

Github : https://github.com/ossrs/srs/wiki/v2_CN_SampleHttpFlv

這篇文章介紹的比較詳細,下面是簡單記錄步驟:

假定你已經下載並編譯好了SRS,可以參考:SRS服務器搭建,ffmpeg 本地推流

首先復制conf中的http.flv.live.conf為my.http.flv.live.conf,內容:

# the config for srs to remux rtmp to flv live stream.
# @see https://github.com/ossrs/srs/wiki/v2_CN_DeliveryHttpStream
# @see full.conf for detail config.

listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
http_server {
    enabled         on;
    listen          80;
    dir             ./objs/nginx/html;
}
vhost __defaultVhost__ {
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
        hstrs       on;
    }

dvr {
        # https://github.com/ossrs/srs/wiki/v2_CN_DVR
        
        enabled         on;
        dvr_path        ./objs/nginx/html/[app]/[stream].flv;
        dvr_plan        session;
        dvr_duration    30;
        dvr_wait_keyframe       on; 
        time_jitter             full;

   }

}

這裏該了http的服務端口為80,添加了保存rtmp流文件的配置,指定存儲路徑./objs/nginx/html/[app]/[stream].flv。

啟動SRS:

./objs/srs -c conf/my.http.flv.live.conf

接下來就是推流了。

假定你安裝了ffmpeg。

ffmpeg -re -i /root/Videos/video.flv -c copy -f flv rtmp://192.168.2.192/live/video

如果推流成功那就可以在VLC中播放rtmp://192.168.2.192/live/video了,這樣之前的html中的url就是:http://192.168.2.192/live/video.flv,

把之前的html/js copy到SRS的/objs/nginx/html/ 下,訪問 http://ip/flv.html(這時的http服務由SRS提供,和之前的不一樣) ,註意ip要和html中的ip一致,否則會報跨域的錯。

至此整個直播點播服務的雛形就搭建成功!

SRS+flv.js打造兼容性較高的直播、點播平臺