> > I am trying to figure out where the problme is in my modified > testRTSPClient.cpp. The concerned line of code are the following: > > > void continueAfterSETUP(RTSPClient* rtspClient, int resultCode, char* > resultString) { > ... > > scs.framer = H264VideoStreamDiscreteFramer::createNew(env, > scs.subsession->readSource());
You don’t need this. Generally speaking, a “H264VideoStreamDiscreteFramer” is used only if you are about to transmit H.264 video, not if you’ve just received it. (And a “H264VideoStreamFramer” would be wrong, because that’s used only to parse a H.264 video byte stream, not discrete NAL units (which is what you have).) The problem is that - for H.264 - the NAL units that you feed into a “MPEG2TransportStreamFromESSource” must each begin with a 4-byte ‘start code’ (0x00 0x00 0x00 0x01). Therefore, you need a new “FramedFilter” subclass - that you would write - that prepends this ‘start code’ to each NAL unit, before passing it to “MPEG2TransportStreamFromESSource”. I.e., you need: scs.subsession->readSource() => your-filter-that-adds-a-start-code => MPEG2TransportStreamFromESSource and then sink->startPlaying() as before. ALTERNATIVELY (and MUCH simpler), you can modify “testH264VideoToTransportStream.cpp” to change the “inputFileName” variable from “in.ts” to “stdin” and then just run openRTSP -v rtsp://url | your-modified-testH264VideoToTransportStream to get a Transport Stream file named “out.ts”. I.e., just pipe the stdout from “openRTSP -v” to your modified “testH264VideoToTransportStream”. 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