Hi,

thanks for your advice :)

I managed to produce a TransportStream, but to do so, i had to use the following setup:

MySource -> MPEG2TransportStreamFromESSource -> MPEG2TransportStreamFramer -> SimpleRTPSink

without the H264VideoStreamDiscreteFramer. The Framer wants the NAL units without the startcodes, but without the startcodes the bytestream is no longer an valid ElementaryStream, so the output of the Framer is no valid ElementaryStream and the result is, of course, no valid TransportStream. The output of the encoder including the startcodes is an valid ElementaryStream (see Annex B of H.264 Standard), so all i needed to do is to get rid of the H264Framer and get the data (discrete NAL units with the startcodes) directly to the MPEG2TransportStreamFromESSource.

As a matter of fact, the transport stream is not playable on iOS and Android devices. Although we managed to create a rtsp connection between an Android 2.3 and VLC streaming a mp4-File. Maybe this is all just a problem of the container, but this is out of scope of this live555 mailing list...

Thanks again for your time and help,
Johannes

On 07/25/2011 10:50 PM, Ross Finlayson wrote:
I am trying to generate a transport stream, streaming H.264. I've read a lot of postings in the mailing list and studied the examples (testH264VideoToTransportStream and testMPEG2TransportStreamer), but as a matter of fact my software won't work. First, i implemented a stream via rtp using a rtsp server and feeding single, raw H264 NAL units to it, this works fine, when streaming to VLC on another PC.

Good.


But i tested this stream and it did not work with iOS and Android.

That's the fault of those systems. First, iOS does not support RTSP (at least, not with "Safari" or any other standard, preinstalled app). And although Android allegedly supports RTSP (according to the link that Karl Dietz noted), people have noted on this mailing list that it doesn't seem to work (at least not with our servers).

(Note: If anyone can identify a specific interoperability issue that prevents Android's RTSP/RTP client from working with our server software, then please let us know.)


So i used the streaming functionality of VLC to test which stream is okay for iOS and Android and decided to use a transport stream.

Note that these systems can play Transport Streams using the "HTTP Live Streaming" protocol. Our server software support this protocol, but *only* for pre-recorded (and pre-indexed) Transport Stream *files*. Our server software *cannot* stream Transport Stream data - using "HTTP Live Streaming" - from a *live source*. So if that's what you're trying to do, then you're out of luck. Sorry.


But if you still want to generate and stream Transport Stream data:

And at this point I'm stuck ... My application provides a stream, i can connect to that stream with VLC, VLC fills it buffer but do not display anything, also no errors or warning.

I suggest that you first make sure that your generated Transport Stream data is OK, and then (and only then) worry about how to stream it. I.e., I suggest that you first generate a Transport Stream *file*, and make sure that media players can play that file OK.


I got a source, which provides discrete NALunits, without the startcode, but i can eassily change this.

NO! The NAL units that you input to "H264VideoStreamDiscreteFramer" *must not* begin with the 0x00000001 start code.


 And I use the following setup of live555:

MySource -> H264VideoStreamDiscreteFramer -> MPEG2TransportStreamFromESSource -> MPEG2TransportStreamFramer -> SimpleRTPSink

I suggest that you first try
MySource -> H264VideoStreamDiscreteFramer -> MPEG2TransportStreamFromESSource -> FileSink
and make sure that your generated Transport Stream file is OK.

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to