[Live-devel] Streaming H264 using Transport Stream

Ross Finlayson finlayson at live555.com
Mon Jul 25 13:50:11 PDT 2011


>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.
-- 

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/


More information about the live-devel mailing list