<div dir="ltr">Hi All,<div><br><div>I implemented live H264 Video and aac Audio source from hardware encoder, and then rewrite "H264framedsource" and "AACFramedsource" class derive from "FramedSource" based on the "DevSource", both audio and video are using "singalNewFrameData" as callback function to signal the "deliverFrame" function as soon as new frame data were ready, audio and video work fine when they are separated.</div><div><br></div><div>Right now, I have problem make them stream out together, it seems audio will hang the video immediately when connect the RTSP server using VLC, I can only hear audio without video, for sometimes, just video without audio, the rtsp server is implement based on "testH264VideoStreamer.cpp", I set new rtp and rtcp Groupsock and rtcp instance and RTP payload value for aac audio, but they use the same multicast address, the sink for video is "H264videoRTPSink" and "MPEG4GenericRTPSink" for audio,  both are added to the same sms's subsesssion using "PassiveServerMediaSubsession" subsession.</div><div><br></div><div>I doubt the problem that the time stamp for video and audio are not correct, since during playing using VLC, I notice that two different time are shown alternately, for the video, I set the "fPresentationTime" as below: since the frame rate of my H264 video is 30fps, the time for the first video frame is based on the "gettimeofday", then increased based on frame rate  </div><div><br></div><div>----------</div><div>







<p class=""><span class="">  </span><span class="">if</span><span class="">( encoder_video_ts.tv_sec == 0 && encoder_video_ts.tv_usec == 0 )</span></p>
<p class=""><span class="">    gettimeofday( &encoder_video_ts, </span><span class="">NULL</span><span class=""> ); </span><span class="">//Set the first stream time stamp from wall clock                                          </span></p>
<p class=""><span class="">  </span><span class="">else</span><span class=""> {</span></p>
<p class=""><span class="">    </span><span class="">unsigned</span><span class=""> </span><span class="">uSeconds</span><span class=""> = encoder_video_ts.tv_usec + 1000000/30; </span><span class="">//Framerate is 30fps                                                     </span></p>
<p class=""><span class="">    encoder_video_ts.tv_sec += uSeconds/1000000;</span></p>
<p class=""><span class="">    encoder_video_ts.tv_usec = uSeconds%1000000;</span></p>
<p class=""><span class="">  }</span></p><p class=""><span class=""> fPresentationTime = encoder_video_ts.tv_sec;<br></span></p><p class=""><span class="">----------</span></p></div><div>And for the AAC audio, for each frame data, I set "fPresetationTime" from "gettimeofday".</div><div><br></div><div>since audio and video are feeding using two separated thread, is this the correct way to sync the A/V ?</div><div><br></div><div>Thank you.</div><div><br></div><div>Kevin</div><div><br></div><div>
</div></div></div>