[Live-devel] raw h264

Vincent A. Autieri II vautieri at geoweb3d.com
Thu Aug 2 13:58:18 PDT 2012


Hello,

 

I'm in the process of evaluating Live555, and I'm trying to send out a live
H264 stream using the Intel's Media SDK H264  encoder.  To ensure I was
encoding properly, I made a raw h264 file and made sure I could stream out
the file with mediaserver.exe, which with VLC it acted like the frame time
was off(played quickly), but using SMPlayer everything worked fine(so I
think that particular issue is VLC and not with the encoding).

 

My second test is to see if I can get Live555 to now stream the output,
meaning, instead of writing to a file, send out through RTSP.  I was
thinking I could just inherit FramedSource and when a mfxBitstream is
completed with the intel encoder, in the FrameSource deliverReadyFrame,
write into the Live555 libarary the binary data that was getting dumped to
the raw h264 file.

 

void EncoderSource::deliverReadyFrame() 

{

 

      if (!isCurrentlyAwaitingData()) return;

      

      if(pmfxBitstream)

      {

            u_int8_t* newFrameDataStart = pmfxBitstream ->Data +
pmfxBitstream ->DataOffset;

            unsigned newFrameSize = pmfxBitstream ->DataLength;

            

            if (newFrameSize > fMaxSize)

            {

                  fFrameSize = fMaxSize;

                  fNumTruncatedBytes = newFrameSize - fMaxSize;

            }

            else 

            {

                  fFrameSize = newFrameSize;

            }

      

      

            gettimeofday(&fPresentationTime, NULL);

            memcpy(fTo, newFrameDataStart, fFrameSize);

      }

      FramedSource::afterGetting(this);

}

 

If it is support to work, please advise where I can look into what I might
be doing wrong.   With that said, when I run SMPlayer (mplayer) and connect
through RTSP, I start to see video coming through (but it looks to be only
the parts of the video that are changing), where SMPlayer then tosses up an
exception dialog which I think is indicating an issue with the PPF and SPS
exists.

 

Initiated "video/H264" RTP subsession on port 18888

[NULL @ 002b8250]non-existing PPS referenced

[NULL @ 002b8250]non-existing SPS 6 referenced in buffering period

[NULL @ 002b8250]non-existing PPS referenced

[NULL @ 002b8250]non-existing SPS 6 referenced in buffering period

[NULL @ 002b8250]non-existing PPS referenced

[NULL @ 002b8250]non-existing SPS 1 referenced in buffering period

..

demux_rtp: Guessed the video frame rate as 25 frames-per-second.

(If this is wrong, use the "-fps <frame-rate>" option instead.)

[ass] Init

[ass] Updating font cache

[h264 @ 01CDB8F4]non-existing PPS 0 referenced

[h264 @ 01CDB8F4]decode_slice_header error

[h264 @ 01CDB8F4]no frame!

Error while decoding frame!

[h264 @ 01CDB8F4]non-existing SPS 6 referenced in buffering period

...

[NULL @ 002b8250]non-existing SPS 4 referenced in buffering period

[NULL @ 002b8250]non-existing PPS referenced

[NULL @ 002b8250]non-existing SPS 4 referenced in buffering period

[NULL @ 002b8250]non-existing PPS referenced

[NULL @ 002b8250]non-existing SPS 4 referenced in buffering period

[NULL @ 002b8250]non-existing PPS referenced

[NULL @ 002b8250]non-existing SPS 4 referenced in buffering period

..

 

Doing a search within this group history, it seems I might need to inject
the SPS and PPS?  If I do, I think the code has changed since that post, and
it's not clear how to set these, as I think the SPS and  PPS can change at
any time during a stream(to control the quality of the connection etc.,
changing bitrates etc.).

 

Can you point me into the right direction with the Live555 library?   I'm
not an expert with the Live555 library nor the Intel Library, so I'm
probably missing something simple..

 

Thanks,

Vincent

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20120802/ca985d08/attachment-0001.html>


More information about the live-devel mailing list