顯示具有 rtmp 標籤的文章。 顯示所有文章
顯示具有 rtmp 標籤的文章。 顯示所有文章

2021/05/14

之前的直播都是直接上youtube

今天有個需求 希望能夠不要使用youtube

而且user要能直接用browser看 不需要 vlc

因為之前上看校的直播使用的是 rtmp

查了一下資料

如果要在browser用rtmp

使用的播放程式都必需轉成flash

問題是現在沒有browser支援flash了

所以想到另一個方式

先把串流轉成hls (m3u8)的格式

在srs.conf 裡進行如下的修改

vhost __defaultVhost__ {

   hls {

        enabled         on;

        hls_path        /usr/local/srs/objs/nginx/html/; (此行依現況調整)

        hls_fragment    10;

        hls_window      60;

    }

}

改完重啟 並進行串流後

會在html生成live目錄及相關的m3u8文件


在client端目前看來只有 safari 能直接在html5 使用 <video> 播放

其他browser都需要再呼叫播放器

參考以下範例


<html>

<head>

    <link href="https://vjs.zencdn.net/7.4.1/video-js.css" rel="stylesheet">

</head>

 

<body>

    <video id='my-video' class='video-js' controls preload='auto' width='800' height='600' poster='avatar-poster.jpg'

        data-setup='{ "html5" : { "nativeTextTracks" : true } }'>

        <source src='http://1.2.3.4:8080/live/livestream.m3u8' type="application/x-mpegURL">

        <p class='vjs-no-js'>

            To view this video please enable JavaScript, and consider upgrading to a web browser that

            <a href='https://videojs.com/html5-video-support/' target='_blank'>supports HTML5 video</a>

        </p>

    </video>

 

    <script src='https://vjs.zencdn.net/7.4.1/video.js'></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.15.0/videojs-contrib-hls.min.js"></script>

 

    <script>

        var player = videojs('my-video');

        player.play();

    </script>

 

</body>

</html>


如果不使用直播而是想播放檔案

就要先把 mp4 轉成 hls

指令如下


ffmpeg -i video.mp4 -codec: copy -start_number 0 -hls_time 15 -hls_list_size 0 -f hls video.m3u8


接下來再依照上述的html範例進行修改 


https://caniuse.com/http-live-streaming


https://blog.csdn.net/weixin_40592935/article/details/109361642


https://videojs.com/


https://videojs.com/getting-started

2018/03/09

今天測了一下obs及nginx nginx-rtmp-module
obs是一個相當方便的跨平台錄影及產生live streaming的軟体
但是並沒有stream server的功能
一般都是把產生的stream丟到 youtube 或其他的stream server上
但如果是在內部使用 就必須自行架設stream server
網路上找到的資料大多是 obs + nginx + nginx-rtmp-module
記錄一下安裝及測試的流程
先安裝nginx
這次使用的是 linux mint ldme2
再來

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

wget http://nginx.org/download/nginx-1.13.1.tar.gz

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

解開後編譯安裝

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
$ make
$ sudo make install

啟動 nginx 看看有沒問題

$ sudo /usr/local/nginx/sbin/nginx

修改config 以支援 rtmp

在 /usr/local/nginx/conf/nginx.conf 下方加上以下程式碼


rtmp {
        server {
                listen 8080;
                chunk_size 4096;

                application live {
                        live on;
                        record off;
                }
        }
}

重啟 nginx

$ sudo /usr/local/nginx/sbin/nginx -s stop
$ sudo /usr/local/nginx/sbin/nginx

接下來在windows 裝好obs後

以串流桌面為例(含音訊)

在來源選擇顯示器擷取
















建立新來源














































再來設定把 stream 丟到之前設好的server















假設 server ip 192.168.12.74 port 要與config 設定的相同 金鑰設定為 test









設好後就可以開始串流















如果出現以下畫面且無錯誤訊息 就表示成功串流出去了

























用VLC進行觀看

vlc rtmp://192.168.12.74:8080/live/test


如果來源有多個可以同時設定 同時擷取

https://obsproject.com/
https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/