iOS HLS測試之本地伺服器搭建和HLS推拉流測試

語言: CN / TW / HK

Nginx伺服器搭建

Nginx安裝

  1. 在終端執行以下命令,來安裝Nginx服務

```

抓取最新安裝路徑

brew tap denji/homebrew-nginx brew install nginx-full --with-rtmp-module ```

  1. 在終端執行nginx,啟動Nginx服務

nginx

接下來在瀏覽器中輸入http://localhost:8080/,出現以下資訊即表示伺服器啟動成功

Nginx伺服器配置

接下來,需要配置Nginx來支援HLS和RTMP推流

前往資料夾/usr/local/etc/nginx/nginx.conf,使用文字編輯器開啟,在檔案的末尾處新增以下配置。

rtmp { server { listen 1935;#埠號 application live1 {#live1 隨便起,後面的拉流的時候保持一致即可 live on; record off; } application hls { live on; hls on; hls_path /usr/local/var/www/hls;#視訊流存放地址,在推流過程中產生的ts和m3u8檔案都會在此路徑中生成 hls_fragment 5s; #設定HLS分片的長度的。預設是5秒 } } }

關於rtmp模組的更多配置和屬性,可以檢視官方文件 https://github.com/arut/nginx-rtmp-module/wiki/Directives

配置完成後,在終端執行以下命令:

```

儲存檔案後,重新載入nginx的配置檔案

nginx -s reload ```

服務端推流實現

這裡需要使用ffmpeg來進行推流,首先安裝ffmepg

brew install ffmpeg

接下來就可以準備推流,在終端執行以下命令:

ffmpeg -re -i /Users/tongxing/Movies/wwdc2022-10128_sd.mp4 -vcodec copy -f flv rtmp://localhost:1935/hls/room

這裡rtmp://localhost:1935/hls/room中的hls就是上面配置的application後面的路徑名稱,後面的room可以隨便寫

可以看到,終端已經在開始對mp4檔案進行分片處理

這個時候開啟/usr/local/var/www/hls路徑就可以看到,資料夾裡面的ts片段和m3u8檔案是在實時更新的。

這個時候就可以拿到 rtmp://localhost:1935/hls/room這個連結來進行播放了。

客戶端拉流實現

Mac上進行拉流播放

為了判斷是否真的推流成功,下載一個 VLC 工具,進行拉流地址的播放。

雙擊播放地址,即可看到,視訊正在播放,同時m3u8檔案一直在更新。

視訊:

暫時無法在飛書文件外展示此內容

Gif圖:

20230216-175431.gif

iPhone 裝置上進行拉流播放

這裡使用的是ijkplayer播放器來進行播放的。文章末尾附上Demo。

修改demo中的某個m3u8播放地址。我這裡修改的是:IJKDemoSampleViewController示例中的播放地址:

這裡播放播放地址,需要將localhost 換成你的 Mac機器的網路IP地址: x.x.x.x:1935

可以看到雙端是可以在同時進行內容同步播放。

視訊:

暫時無法在飛書文件外展示此內容

gif圖:

附件:

暫時無法在飛書文件外展示此內容