> On Feb 26, 2020, at 8:49 AM, Matthew Czarnek <mczar...@edge360.com> wrote: > > I need to be able to have trick play over RTSP for Matroska files.
Note that when streaming from a Matroska file, ’seeking’ should already work; just not fast-forward or reverse play. > it is streaming it to openRTSP and storing it to a file This is good. Many people don’t even get this far :-) > However, I cannot get that file to play. > > I suspect it has something to do with the NAL start codes. Primarily because > VLC's error log is telling me: h264 module discarded (no startcode) This is strange, because “openRTSP” records H.264 streams by using a “H264VideoFileSink” object, which automatically inserts a ’start code’ (0x00000001) before each NAL unit in the file. (Note that the incoming H.264/RTP data does not include start codes.) Be sure that you rename the video file - recorded by “openRTSP” - to have a “.h264” filename suffix before you try playing it with VLC. Otherwise VLC probably won’t recognize it. > I've looked at the bytes of the AVPacket, every packet does seem to have the > first few bytes used for a NAL Unit Header. I've tried cutting those off, > thinking they were the start codes No! The start code is 4 bytes: 0x00 0x00 0x00 0x01 (or sometimes 3 bytes: 0x00 0x00 0x01) > I've tried creating H264VideoStreamDiscreteFramer with > includeStartCodeInOutput set to true. No, when streaming over RTP, that is never the right thing to do. Your “createNewRTPSink()” implementation should be creating a “H264VideoRTPSink”. Your “createNewStreamSource()” implementation depends upon your H.264 video source. If it is a continuous byte stream (which is what “ffmpeg” usually generates when encoding H.264), then you should use a “H264VideoStreamFramer”. If, however, it is discrete H.264 NAL units, then you should use a “H24VideoStreamDiscreteFramer”. Your input source should feed H.264 NAL units - one at a time - to the downstream “H24VideoStreamDiscreteFramer” object. These NAL units *must not* begin with a ‘start code’ (nor should you set the “includeStartCodeInOutput” parameter in the “H24VideoStreamDiscreteFramer”). Ross Finlayson Live Networks, Inc. http://www.live555.com/ _______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel