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图:

附件:

暂时无法在飞书文档外展示此内容