环境
- 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 是可以直接播放的





URL的组成
以 rtsp://somedomain.com:554/live/test?token=abcdefg&field=value 为例,该 url 分为以下几个部分
- 协议(
scheam) :rtsp协议 - 虚拟主机(
vhost) :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点播,推荐)