RTP-ES推流给zlmediakit

发布时间 2023-08-23 17:43:46作者: 邗影

1 开启rtpserver:

http://127.0.0.1:80/index/api/openRtpServer?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&port=30000&tcp_mode=1&stream_id=test123&enable_tcp=1
 
2 发流:mp4 解析后数据是RTP-ES发出去的,不是RTP-PS-ES

ffmpeg -re -i  "C:\output.mp4" -vcodec copy -an -f rtp rtp://127.0.0.1:30000

3 会发现没有流注册(我的MP4是10GOP的,关键帧和SPSPPS很频繁)

发现是跟PT值有关;ffmpeg发的RTP-ES的PT值是96;与config.ini 中RTP-PS相同了;注意区分;修改配置文件,让这个96的PT值对应RTP-ES(h264_pt);或者发RTP包打一个其他的PT值,然后ZLM配置文件进行更新

 bool GB28181Process::inputRtp 函数会根据PT值创建不同的track,走不同的解码器,如果ES流走了PS解析,那就无法解析到帧信息和裸数据;就无法进行媒体注册


另外;如果发包的PT值和码流信息,以及config都是对应的;那无法及时注册,可能是因为,送过来的数据没有关键帧;或者是没有SPS。PPS;或者是只接收了部分不完整的帧