ZLMediaKit教程(三)URL规则
ZLMediaKit系列文章(共六篇):
ZLMediaKit流媒体(一)编译安装
ZLMediaKit教程(二)主程序和配置文件解析
本文为第三篇:ZLMediaKit教程(三)URL规则
环境
- ubuntu 18.04 64bit
- ZLMediaKit 20210924
- ffmpeg 3.4.8
流媒体源
当主程序启动后,客户端启动推流(这里以 rtsp 方式为例,rtmp 和 rtp 也类似)
ffmpeg -re -i test.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
这时,在 MediaServer 主程序的输出中,可以看到类似下图的信息
在 ZLMediaKit 中,有个叫做流媒体源(MediaSource)的数据对象,它可以被用于直播转发、推流转发等功能,目前支持5种类型的流媒体源,分别是 RtspMediaSource、RtmpMediaSource、HlsMediaSource、TSMediaSource 和 FMP4MediaSource
在 ffmpeg 推流成功后,对应到播放地址分别是
rtsp://192.168.1.140/live/test
rtmp://192.168.1.140/live/test
http://192.168.1.140/live/test/hls.m3u8
http://192.168.1.140/live/test.live.ts
http://192.168.1.140/live/test.live.mp4
这些 url,使用播放器 ffplay 是可以直接播放的
【相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】
音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】免费领取C++音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击 994289133加群领取哦~
URL的组成
以 rtsp:// http://somedomain.com:554/live/test?token=abcdefg&field=value 为例,该 url 分为以下几个部分
- 协议(scheam) : rtsp协议
- 虚拟主机(vhost) : http://somedomain.com,该字段既可以是域名也可以是 ip 地址,如果是 ip 的话,则对应的虚拟主机为 __defaultVhost__
- 服务端口号(port) : 554,如果不指定端口号,则使用协议默认端口号。rtsp 默认端口554,rtmp 默认端口1935,http 默认端口80
- 应用名(app) : 此例是 live
- 流 ID(streamid) : 此例是 test
- 参数(args) : token=abcdefg&field=value,格式跟 http 一致,url 参数主要用于播放、推流鉴权,在触发 hook api 时,会把这些参数提交给第三方业务服务器
点播
ZLMediaKit 的点播一般通过 mp4 文件来实现,推荐大家使用 http mp4 点播,这样是最简单,服务器也无需解复用 mp4 文件,当然 ZLMediaKit 目前也支持 rtsp、rtmp、http-flv、websocket-flv 的 mp4 点播, 对应的 url 跟直播 url 类似
要在 ZLMediaKit 中实现点播,只需要将 mp4 文件放到 www/record 下,默认情况下,应用名是 record,可以在 config.ini 中修改
那么,点播 URL 就是
rtsp://192.168.1.140/record/test.mp4
rtmp://192.168.1.140/record/test.mp4
http://192.168.1.140/record/test.mp4 (通用http点播,推荐)
如果你对音视频开发感兴趣,或者对本文的一些阐述有自己的看法,可以在下方的留言框,一起探讨。
原文地址: ZLMediaKit教程(三)URL规则 - 资料 - 音视频开发中文网 - 构建全国最权威的音视频技术交流分享论坛