<p>
        I don't get more detail reply , I think&nbsp; my description is not 
enough clear,&nbsp; &nbsp;so after rearrange my word, I submit&nbsp; it again.
</p>
<p>
        [1]<br />
i have implemented a RTSP Server(like proxy server), packetizing the audio and 
video stream to TS from EasyDarwin
</p>
<p>
        <br />
</p>
<p>
        [2]<br />
if only have h264 or only have ADTS&nbsp; AAC stream VLC play is ok.
</p>
<p>
        <br />
</p>
<p>
        [3]<br />
but mixed h264 and ADTS AAC together, after a few seconds VLC only play 
video.<br />
audio packet will be lost, i see it from the VLC [current media information] 
dialog -&gt; [statistics] tab -&gt; Lost.
</p>
<p>
        <br />
</p>
<p>
        [4]<br />
my audio stream code as ADTSAudioFileSource
</p>
<p>
        <br />
</p>
<p>
        [5]<br />
my h264 code snippet is&nbsp; in below<br />
&nbsp;void BlockSource::doGetNextFrame()<br />
&nbsp;{<br />
&nbsp;&nbsp;if (_bFirst)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;fFrameSize = 
MyExchangeBuffer::Inst().readFirstFromVideoBlock(_strBlockName.c_str(), fTo, 
fMaxSize);<br />
&nbsp;&nbsp;&nbsp;_bFirst = false;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;fFrameSize = 
MyExchangeBuffer::Inst().readFromVideoBlock(_strBlockName.c_str(), 
_pBlockChunkPointer, fTo, fMaxSize);<br />
&nbsp;&nbsp;}
</p>
<p>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;gettimeofday(&amp;fPresentationTime, NULL);//i dont know how to set 
it correctly...<br />
&nbsp;&nbsp;fDurationInMicroseconds = 1000000 / 22;//i dont know how to dynamic 
set it, so i set it to 22 fps.
</p>
<p>
        &nbsp;&nbsp;nextTask() = 
envir().taskScheduler().scheduleDelayedTask(fDurationInMicroseconds,<br />
&nbsp;&nbsp;&nbsp;(TaskFunc*)FramedSource::afterGetting, this);<br />
&nbsp;}
</p>
<p>
        <br />
</p>
<p>
        [6]<br />
my sub session source snippet in below<br />
&nbsp;FramedSource * 
TSFromH264BlockServerMediaSubsession::createNewStreamSource(unsigned 
/*clientSessionId*/, unsigned &amp; estBitrate)<br />
&nbsp;{<br />
&nbsp;&nbsp;estBitrate = 2500; // kbps, estimate<br />
&nbsp;&nbsp;MPEG2TransportStreamFromESSource* tsFrames = 
MPEG2TransportStreamFromESSource::createNew(envir());<br />
&nbsp;...<br />
&nbsp;&nbsp;&nbsp;BlockSource* blockSource = BlockSource::createNew(envir(), 
_strBlockName.c_str());//H264 from RTSPClient<br />
&nbsp;&nbsp;if (blockSource == NULL)<br />
&nbsp;&nbsp;&nbsp;return NULL;<br />
&nbsp;&nbsp;H264VideoStreamFramer* framer = 
H264VideoStreamFramer::createNew(envir(), blockSource, 
True/*includeStartCodeInOutput*/);<br />
&nbsp;&nbsp;tsFrames-&gt;addNewVideoSource(framer, 5/*mpegVersion: H.264*/);<br 
/>
&nbsp;&nbsp;...<br />
&nbsp;&nbsp;tsFrames-&gt;addNewAudioSource(adtsSource, 4/*mpegVersion: 
AAC*/);<br />
&nbsp;&nbsp;return MPEG2TransportStreamFramer::createNew(envir(), 
tsFrames);//blockSource<br />
&nbsp;}
</p>
<p>
        &nbsp;RTPSink * 
TSFromH264BlockServerMediaSubsession::createNewRTPSink(Groupsock * 
rtpGroupsock, unsigned char rtpPayloadTypeIfDynamic, FramedSource * 
inputSource)<br />
&nbsp;{<br />
&nbsp;&nbsp;return SimpleRTPSink::createNew(envir(), rtpGroupsock,<br />
&nbsp;&nbsp;&nbsp;33, 90000, "video", "MP2T",<br />
&nbsp;&nbsp;&nbsp;1, True, False /*no 'M' bit*/);<br />
&nbsp;}
</p>
<p>
        [7]<br />
&nbsp;//pBlockName is a string.<br />
&nbsp;sms-&gt;addSubsession(kagula::TSFromH264BlockServerMediaSubsession::createNew(env,
 pBlockName, false));<br />
&nbsp;rtspServer-&gt;addServerMediaSession(sms);&nbsp;
</p>
<p>
        <br />
</p>
<p>
        [8]I need help, any advise will be appreciate
</p>
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to