[Live-devel] MPEG4 streaming using ffmpeg as encoder

ssingh at neurosoft.in ssingh at neurosoft.in
Fri Oct 18 15:19:55 PDT 2013


I tried sending this extra data as first packet and also tried sending 
it with each packet but no use. I debuggedit and found that when i send 
this packet my MPEG4discreteFrame found all the information it needed 
(debugged function analyzeVOLHeader()) but still my tetsRTSPClient does 
not show any packets received.

Thanks

On 2013-10-19 02:54, ssingh at neurosoft.in wrote:
> Thank you for the clarification. I will try to send this extra data as
> first packet. I have another confusion. if i send this packet as first
> packet when there was no client attached to it and later on client
> attached to it than how will that client get this packet as it will be
> lost. Right now the way I am using FrameSource is:
> 
> /****************************************************************/
> void MyStreamingDeviceSource::streamPacket(AVPacket pkt)
> {
> m_queue.putPacket(&pkt);
> envir().taskScheduler().triggerEvent(m_eventID, this);
> }
> /***************************************************************/
> 
> so it does not matter if a client is attached or not I keep on sending
> the data to network.
> 
> Thanks,
> Caduceus
> 
> On 2013-10-19 01:54, Ross Finlayson wrote:
>> Your "deliverFrame()" function looks OK - provided that it gets called
>> whenever a new MPEG-4 frame is available. Note that each call to
>> "MyStreamingDeviceSource::doGetNextFrame()" must be followed
>> (eventually) by a call to "FramedSource::afterGetting(this)".
>> Therefore, if you return from "deliverFrame()" at the "if(newFrameSize
>> == 0) return;" statement (because no new frame data is available), you
>> must ensure that "deliverFrame()" somehow gets called again later when
>> new frame data *is* available.
>> 
>>> when i am doing that I am not getting anything in VLC and
>>> testRTCPClient
>> 
>> You should use "testRTSPClient" (sic) for testing first; only after
>> that's working should you bother using VLC.
>> 
>>> I suspect that I did not send the configuration data before sending
>>> the actual data. I saw that my AVPAcket has "00000001B6" in starting
>>> and I think i somehow need to send "00000001B0" to signal start of
>>> data.
>>> 
>>> I also noticed that when i encode using FFMpeg in codec->extradata I
>>> have some header information that has "00000001B0" in that but i
>>> dont know how to pack all this information
>> 
>> Yes, this 'extra data' is important. You should treat it just as you
>> would a video frame, and make sure that it is the first 'frame' that
>> you feed to your "MyStreamingDeviceSource::deliverFrame()" is this
>> 'extra data'. I suspect that this may be enough to make your code
>> work.
>> 
>>  Ross Finlayson
>> Live Networks, Inc.
>> http://www.live555.com/ [1]
>> 
>> 
>> Links:
>> ------
>> [1] http://www.live555.com/
>> 
>> _______________________________________________
>> live-devel mailing list
>> live-devel at lists.live555.com
>> http://lists.live555.com/mailman/listinfo/live-devel
> 
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live555.com
> http://lists.live555.com/mailman/listinfo/live-devel


More information about the live-devel mailing list