ZLMediaKit使用说明
如何使用
你有三种方法使用ZLMediaKit,分别是:
- 使用c api,作为sdk使用,请参考这里.
- 作为独立的流媒体服务器使用,不想做c/c++开发的,可以参考 restful api 和 web hook.
- 如果想做c/c++开发,添加业务逻辑增加功能,可以参考这里的测试程序.
启动项目
根据git项目自行操作,建议使用docker方式启动。
#此镜像为github持续集成自动编译推送,跟代码(master分支)保持最新状态
docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
推流
ZLMediaKit支持rtsp/rtmp/rtp推流,一般通常使用obs/ffmpeg推流测试,其中FFmpeg推流命令支持以下:
- 使用rtsp方式推流
# h264推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test # h265推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test
- 使用rtmp方式推流
ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f flv rtmp://127.0.0.1/live/test # RTMP标准不支持H265,但是国内有自行扩展的,如果你想让FFmpeg支持RTMP-H265,请按照此文章编译:https://github.com/ksvc/FFmpeg/wiki/hevcpush
- 使用rtp方式推流
# h264推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000 # h265推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000
收流
可以通过接口 http://< ip >:8080/index/api/getMediaList?secret=< secret > 获取
- 8080是因为我们使用docker启动时映射的是8080:80
- secret需要进入容器 在文件/opt/media/conf/config.ini中查看
然后我们可以获取到所有的流数据,简化如下:
{
"code" : 0,
"data" :
[
{
"app" : "live"
{
"identifier" : "24-83",
"local_ip" : "172.17.0.2",
"local_port" : 1935,
"peer_ip" : "192.168.100.104",
"peer_port" : 57008
},
"schema" : "rtsp",
"stream" : "test",
}
]
}
播放流的url组成以 rtsp://somedomain.com:554/live/0?token=abcdefg&field=value 为例,该url分为以下几个部分:
- 协议(scheam) : rtsp协议,默认端口554
- 虚拟主机(vhost) : somedomain.com,该字段既可以是域名也可以是ip,如果是ip则对应的虚拟主机为__defaultVhost__
- 服务端口号(port) : 554,如果不指定端口号,则使用协议默认端口号
- 应用名(app) : live
- 流ID(streamid) : 0
- 参数(args) : token=abcdefg&field=value
对于上述json回复,我们使用
# 8554 docker映射了554端口
ffplay.exe -i rtsp://<ip>:8554/live/test
即可进行播放。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1430797759@qq.com