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模塊的更多配置和屬性,可以查看官方文檔 http://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圖:

附件:

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