ZLMediaKit-pro直接接收jt1078数据流程
ZLMediaKit-pro介绍
zlmediakit-pro 是zlmediakit的升级版本,新加了很多特性,如直接接收1078协议数据,转码能力等
具体请看官方介绍
github仓库地址
下面的docker镜像是zlmediakit-pro试用版本,已限制流最大在线时长。
详细文档请参阅:
https://hub.docker.com/r/zlmediakitpro/zlmediakit-pro
拉取镜像
docker pull zlmediakitpro/zlmediakit-pro:feature-all
运行镜像:docker docker run -d -p 808:80 -p 10000:10000 镜像id
上面这两个端口推流/播放需要用到,你可以映射为别的,但下面的代码请自行修改
接下来配置推流地址服务器ip:10000
这个地址一定要外网可访问,因为车要往这个地址推送数据,除非你是本地模拟的视频.
因为它推流是通过rtp推送上来的,所以只能写10000端口,运行测试程序开始推流
服务器接收到推流:
1 | 2024-06-18 16:51:25.492 T [MediaServer] [1-event poller 0] MediaSink.cpp:284 addMuteAudioTrack | Mute aac track added 2024-06-18 16:51:25.492 I [MediaServer] [1-event poller 0] MediaSource.cpp:529 emitEvent | 媒体注册:fmp4://__defaultVhost__/rtp/088776402738_1 2024-06-18 16:51:25.493 I [MediaServer] [1-event poller 0] MultiMediaSourceMuxer.cpp:705 onAllTrackReady | stream: rtp://__defaultVhost__/rtp/088776402738_1 , codec info: mpeg4-generic[8000/1/16] H264[704/576/0] 2024-06-18 16:51:25.493 I [MediaServer] [1-event poller 0] MediaSource.cpp:529 emitEvent | 媒体注册:rtmp://__defaultVhost__/rtp/088776402738_1 2024-06-18 16:51:25.493 D [MediaServer] [1-event poller 3] MediaSource.cpp:468 operator() | 收到媒体注册事件,回复播放器:rtmp://__defaultVhost__/rtp/088776402738_1 2024-06-18 16:51:25.493 I [MediaServer] [1-event poller 0] MediaSource.cpp:529 emitEvent | 媒体注册:rtsp://__defaultVhost__/rtp/088776402738_1 |
这里的088776402738_1
就是流ID
播放它需要这样(以ws举例):ws://192.168.8.185:808/rtp/40206402738-1.live.flv
其他播放方法参考官方文档:
播放url规则
注意 这里url上的应用名必须是rtp
不能是live
另我配置了本地808到容器80的映射,如果你没有配置或者配置了别的,请自行修改
小问题
各位如果是使用flv.js,或者mpegts.js,当车辆终端上传的音频格式为PCMA的时候播放器会疯狂报错好像是:Unsupported codec in video frame: xxx
ZML也会报错:
该编码格式可能不被播放器支持:PMCA
解决方案
1.更换前端播放器框架,作者推荐Jessibuca,或者EasyPlayer
2.不换了!用回jtt1078
后记
我之前是使用的jt1078服务先接一层,然后ffmepg推流到ZLMediaKit,这样中间大概有2-4秒的延迟,换这个pro版直接接收数据确实快了点,但是这玩意最少1w块钱,自己看着办吧.