跳到主要內容

[操作記錄] 在 Mac上安裝 Nginx 以實現 HLS Stream


因為課堂需要,所以在此簡單紀錄安裝 Nginx 的過程。

首先,在 Terminal 輸入以下指令來安裝 Homebrew:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

若要移除安裝,則執行以下指令:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

升級 Homebrew:
$ brew update

接著就是開始安裝 Nginx:
$ brew tap denji/nginx

我們需要用到 nginx-rtmp-module,所以接著輸入:
$ brew install nginx-full --with-rtmp-module


設定 RTMP 與支援 HLS,打開位於 /usr/local/etc/nginx 的 nginx.conf 新增以下文字:
在event 跟 http 之間輸入:
event{
..
}

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_continuous on;
            hls_cleanup off;
        }
    }
}

http{
..
}

在 http 裡輸入:
http{
..
    location / {
    ..
    }

    location /hls {
        # Serve HLS fragments
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        root /tmp;
        add_header Cache-Control no-cache;
        }

..
}



因為對文件做了更改,所以需要重新載入。
$ nginx -s reload

再來需要安裝播放器 ffmpeg,將我們的檔案分割成串流所需要的.m3u8 及 .ts。
$ brew install ffmpeg

轉換檔案:
$ ffmpeg -i FILE_NAME -g 60 -hls_time 2 -hls_list_size 0 playlist.m3u8

接著移動轉好的檔案到tem/hls下,才能正常串流。
$ cp platlist* /tmp/hls/

接著就可以從瀏覽器看到影片串流囉!
$ http://localhost:8080/hls/playlist.m3u8

補充幾個Nginx的用法:

啟動 Nginx:
$ nginx -s start

關閉 Nginx(可能需要清理瀏覽器暫存):
$ nginx -s stop


文章參考:
https://medium.com/@ponychen/在-osx-上透過-homebrew-安裝-nginx-與啟用-hls-功能-9b5f02130f2
https://yuhanle.github.io/2018/03/12/live-broadcast-rtmp/
http://stonefishy.github.io/blog/2015/12/05/using-nginx-in-mac-os-x/

留言

這個網誌中的熱門文章

在 mac OS 上實現 ARP 欺騙

操作環境 攻擊電腦: IP: 192.168.0.101 Operating System: macOS High Sierra 10.13.5 Hardware: MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports) Programming Language: Python 3.5.4 IDE: PyCharm 2018.1 WireShark: Version 2.6.0 被攻擊電腦: IP: 192.168.0.102 Operating System: Windows 10 Hardware: ASUS S550CM 路由器: IP: 192.168.0.1 說明: 當駭客的第一步,最常見的方法就是擷取別人的封包。假設A電腦連上一個未加密的網站,那這台電腦丟給這個網站的封包都會以明文傳送,這時候就很容易被有心人士竊聽封包,將你的帳號密碼全部竊取走!這也是為什麼現在越來越多網站都要提升安全性,將HTTP加密,成為HTTPS。 ARP: 全名為 Address Resolution Protocol,為 位址解析協定,在每一台電腦中都有一個ARP Table,儲存區域內的電腦 IP 及 MAC Address。通常 Host 會以廣播的方式詢問誰擁有某個 IP的實體位址,在此區域上的電腦,都會確認自己是不是與廣播中的相符,若一樣的話則回覆自己的MAC Address,反之則忽略。 而 ARP Table 儲存在 ARP Cache 中,裡面也有分動態記錄及靜態紀錄兩種: 動態記錄: 當一台電腦解析完 ARP 封包後,會將結果儲存在 ARP Cache中,以供後續使用。但為了避免網路黑洞的發生,所以紀錄的壽命時間通常為兩分鐘,若有被使用到,就會被延長為10分鐘。 靜態紀錄: 如果使用者知道對方的 IP 及 MAC Address 為何,就可以以手動的方式加入,就叫做靜態紀錄,但它的壽命比動態記錄長,只有重新開機、與動態記錄衝突、手動刪除才會消失。 設置靜態紀錄可以在終端機輸入: arp -s IP MAC 步驟: 首先,必須要先下載 Scapy,它就很像是Wireshark,一樣可以截取封包,更厲害的...

使用 IFTTT 傳送通知到手機上

進入網站 https://ifttt.com/maker_webhooks   。 點擊右上角 Sign up 。 可以選擇 Google 帳號或是 Facebook 帳號。 因為我之前已經註冊過,所以我直接登入。 註冊 / 登入 成功右上角會有自己的帳號。 點擊 Documentation ,這裡可以測試自己建立的事件是否可以正確觸發。 上方一長串的亂數就是你的 Maker Key ,通常是辨別你的身份用,請別洩漏出去。 如果想要更新自己的 Maker Key ,請回到上一頁點擊 Settings ,再點 Edit connection ,網站就會換一組新的給你。(下圖為點擊後的狀況) 現在我們就來做一個傳送通知到手機上吧! 點擊自己的帳號名字,選擇第一個 New Applet ,每一個觸發事件都叫做一個 Applet 。 接著點擊我們的 +this ,也就是我們觸發來源 Source 。 IFTTT 有提供非常多的 Service ,而我們今天要做的是透過 HTTP 推播通知到手機上,所以我們搜尋 Webhook 。 第二步選擇 Receive a web request 。 接著會要求我們輸入事件名稱 (Event Name) ,輸入完後點擊下方的 Create trigger 。 (補充:經測試過後盡量不要使用中文事件名稱,會比較容易出現編碼上的問題。) 到這邊我們的來源就已經設定好了,接著設定手機端的 +That ,也就是 Action 。 搜尋端輸入 notifications 。 第四步可以選擇簡單的文字格式 ( 左邊 ) ,也可以選擇帶有照片及網址的通知 ( 右邊 ) 。 今天選擇左邊做簡單的測試。 以氣象通知為例,我輸入的是 今天 {{Value1}} 的天氣最高溫是   {{Value2}} 度,最低溫是 {{Value3}} 度。 - {{OccurredAt}} 這裡的 Value1 、 Value2 、 Value3 是來自 HTTP 端的 query 值或是...