2013-11-28 103 views
1

我正在使用ffmpeg C++庫。我需要攔截來自攝像機的RTCP數據包,以便從發件人報告中獲取時間戳。 ffmpeg中是否有任何方法或結構向我提供這些信息?我完全卡住了,但我無法解決這個問題。使用FFMPEG從IP攝像機讀取RTCP數據包

任何幫助將不勝感激。在此先感謝,

回答

5

最後我不得不攻入的ffmpeg庫這樣的:

 // Patch for retrieving inner ffmpeg private data 
     RTSPState* rtsp_state = (RTSPState*) context->priv_data; 
     RTSPStream* rtsp_stream = rtsp_state->rtsp_streams[0]; 
     RTPDemuxContext* rtp_demux_context = (RTPDemuxContext*) rtsp_stream->transport_priv; 

     // Decode the NTP time from the 64 bit structure 
     uint64_t ntp_time = rtp_demux_context->last_rtcp_reception_time; 
     uint32_t seconds = (uint32_t) ((ntp_time >> 32) & 0xffffffff); 
     uint32_t fraction = (uint32_t) (ntp_time & 0xffffffff); 
     double useconds = ((double) fraction/0xffffffff); 

現在我終於有了時間戳信息。

+0

你爲此修補了哪個文件?你介意分享這個補丁嗎?提前致謝。 – Arun

+1

嗨阿倫。這是前一陣子。我花了daaaaaays來解決這個問題。很多黑客,但它的工作。祝你好運! –

+0

我希望這是由圖書館本身作爲API公開的。儘管如此,謝謝。 – Arun