[Live-devel] Fixing "The total received frame size exceeds the client's buffer size"

Jan Ekholm jan.ekholm at d-pointer.com
Sat May 17 00:35:46 PDT 2014


On 17 maj 2014, at 00:23, Ross Finlayson <finlayson at live555.com> wrote:

>> If I change the H264VideoStreamFramer  to a H264VideoStreamDiscreteFramer
> 
> Yes, you MUST do this, because your input source (from the RTSP client's "H264VideoRTPSource") consists of a sequence of discrete NAL units, rather than an unstructured byte stream.  I.e., you MUST feed your RTSP client "MediaSubsession"s "readSource()" into a "H264VideoStreamDiscreteFramer", NOT a "H264VideoStreamFramer".
> 
> 
>> then I see none
>> of the above errors and then testRTSPClient gets data, but it is not playable by, say, VLC. 
> 
> That's because your "H264VideoRTPSink" does not know the H.264 SPS and PPS NAL units for the stream.
> 
> To fix this, create your "H264VideoRTPSink" using one of the "createNew()" versions that take the SPS/PPS NAL units as parameter.  E.g.
> 	H264VideoRTPSink::createNew(envir(), rtpGroupsock, 96, clientMediaSubsession.fmtp_spropparametersets());
> I.e., in this case you're taking the encoded SPS/PPS NAL unit information that your RTSP client already got from the downstream server (camera).

With those two changes it works. Thank you for the help. There is btw no H264VideoRTPSink::createNew() version that takes
the arguments you mention, you need to add the profile-level-id too, but it seems to work ok by using the value from:

    unsigned int profileLevelId = m_subsession->attrVal_int( "profile-level-id" );

-- 
Jan Ekholm
jan.ekholm at d-pointer.com






More information about the live-devel mailing list