Code: Select all
Source Type: Remote
Function: Monitor
Remote Protocol: RTSP
Remote Method: RTP/Unicast
Remote Host Name: 192.168.101.142
Remote Host Port: 554
Remote Host Path: live
Capture width: 640
Capture height: 480
After correcting the headers from the SETUP and PLAY messages, I realized that in Unicast mode, ZoneMinder expects in the answer of the PLAY message, a "RTP-info" header with the sequence number and timestamp from the first packet of the RTP sequence. What I have done is to comment this secction of code (zm_rtsp.cpp) and in the zm_rtp_data.cpp, capture this values from the headers of the first RTP data packet (after line 51):
Code: Select all
if( mFirstPacket ) {
mRtpSource.updateSeq( ntohs(rtpHeader->seqN) );
mRtpSource.updateJitter( rtpHeader );
mFirstPacket = false;
}
Some times I receive a PORT UNREACHABLE message from the server, which means that ZoneMinder was unable to decode a packet maybe due a timeout.
I have seen to many people complaining about RTSP implementation, because it doesn't work. Is there a more elegant way to set the seq and the rtptime values without to do it by hand (commenting that slice of code)? Maybe ZoneMinder fails buffering the data or it is unable to decode the H264 format?
I will really appreciate any help configuring the camera with the ZoneMinder or any code change.