HI,

I am receiving uncompressed audio and video from a live Directshow source, 
encoding them with ffmpeg and streaming them out using a RTSP server based on 
classes derived from Live OnDemandServerMediaSubsession. Then I play the feed 
on a remote machine using VLC player. The problem is that the audio and video 
start playing fine and well synchronized, but then the audio starts drifting 
slowly. Specifically, it gets faster. Within 5-10 minutes it is noticeably 
faster than the video and within 15 minutes, the audio stops playing 
altogether. I get error messages on VLC player saying that PTS is out of range. 
I am not sure if this is a VLC issue, but I suspect there is something about 
timestamps I may be doing wrong. 

In my implementation of deliverFrame() function in the classes for the sources, 
I read uncompressed audio and video from ring buffers (which are filled by 
another thread), compress them, and then fill the buffers accordingly before 
calling FramedSource::afterGetting(this). I also set fPresentationTime using 
gettimeofday(&fPresentationTime, NULL); and set fDurationInMicroseconds to 
1000000/30 for video and the audio frame duration for audio. Occasionally, when 
the deliverFrame() function tries to read from the ring buffers, it does not 
find data available. Then I call 
envir().taskScheduler().scheduleDelayedTask(...) with a small delay interval 
and return. 

Any help or clues would be appreciated.
Debargha.
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to