http://blog.csdn.net/ljz9425/article/details/7627949
視頻傳輸採用RTP,實時傳輸視頻,服務器端使用vlc播放,剛開始有3秒延時,播放時間越長延時越長,5分鐘後竟達到10秒以後,分析代碼,可能是時間戳造成,原時間代碼部分:
timestamp_increse+=(unsigned int)(90000.0 / framerate); //framerate爲幀率
網絡上有人提出時間戳改爲如下:
struct timeval tv;
gettimeofday(&tv , NULL);
timestamp_increse += (uint)((2.0*90000*tv.tv_usec + 1000000.0)/2000000);
但問題依舊
經測試時間戳採用設備時間,VLC播放基本正常,播放1小時後延時基本爲3秒,代碼如下:
struct timeval tv;
gettimeofday(&tv , NULL);
timestamp_increse = (uint)(90000.0 / (1000.0 / ((tv.tv_sec - tv_pre.tv_sec) * 1000.0 + (tv.tv_usec - tv_pre.tv_usec) / 1000.0)));
memcpy(&tv_pre, &tv, sizeof(tv_pre));
希望對遇到此問題的朋友有所幫助!