原创 使用libfdk-aac編碼所需注意的細節

背景 libfdk-aac源碼中提供了一個編碼的示例程序,文件爲aac-enc.c,演示了編碼API基本的調用流程,流程也比較簡單,看看示例代碼就明白了。這裏要講的是應用在rtp流媒體系統時,所需注意的細節。 細節 封裝格式的選擇

原创 你瞭解linxu下的線程id嗎?

背景 最近在實現一個日誌庫時,需要記錄線程id,我採用C++ 11中的std::thread api獲取,如下例子代碼: #include <thread> #include <iostream> int main() {

原创 通過libfdk-aac的使用來看音頻參數配置的策略

靈活性 背景 在一些實時音視頻系統中,終端軟件通常可以設置音頻編碼參數,如採樣率,通道數,碼率等。開放編碼參數可配,增加了靈活性,但是在實現增加了複雜度。特別是某些編碼格式,如果考慮到音頻的採集,回放,實時性。這裏針對AAC的編解

原创 說一說asio中兩個需要注意的錯誤碼

背景 在我們的媒體庫中使用基於asio封裝一套IO模塊,主要功能是媒體流的收發及轉發。我們的系統使用的RTP協議作爲流媒體協議,所以傳輸層協議是基於udp協議。 問題1 在sip信令協商成功後,開始流媒體收發時,偶現在異步收接口中

原创 RFC3640中對AAC進行RTP打包方式介紹

總括 RFC3640和RFC6416定義了兩種對MPEG-4 Stream的RTP封包方式。這裏只介紹對音頻碼流(即AAC)的封裝方式。先從RFC3640開始。如果有RTP打包音視頻碼流的開發經驗,下面的一些知識點,理解起來會簡單

原创 RFC6416中對AAC進行RTP打包方式介紹

簡介 rfc6416是描述如何將MPEG-4 Audio/Visual Stream封包至RTP中的。文檔寫的還是比較清晰簡明的,對音頻而言,沒有再定義額外的碼流結構,就是直接對MPEG-4 Audio stream的結構進行打包

原创 RTP RR及SR包中NTP的轉換

背景 在RTCP的RR及SR中report block存在一個ntp字段,這個值爲RR或SR產生時間戳。RFC3550的第4節描述了它的意義 Wallclock time (absolute date and time) is

原创 一種用於voip客戶端多窗口視頻渲染的實現思路

在我以往的opengl渲染視頻的使用經驗中,是由opengl渲染環境管理窗口句柄,將作爲界面層傳入的窗口句柄的子窗口嵌入其中進行視頻圖像顯示。現在介紹的一種實現方式與此大相徑庭:渲染的窗口句柄由上層界面管理,每個窗口句柄綁定一個o

原创 asio中的buffer

異步操作 基本特徵 異步操作的特點就是,操作不會被阻塞,馬上返回,操作結果會通過回調函數告知。在asio中的異步IO也是如此,我們來看一個asio中udp socket的異步sendto接口,如下代碼 dpSocket.asy

原创 說說C++中的POD

背景 POD的全稱是Plain Old Data,這個Old就是體現了C語言的兼容。POD數據類型就是兼容性很重要的體現,特別是對用戶自定義的類型(struct,class定義的類)。因爲標準要求POD類型的內存佈局是完全與C語言

原创 libfdk-aac編解碼代碼示例

背景 前面幾篇文章介紹了AAC的幾種封裝標準及libfdk-aac的一些使用細節,這篇文章就給出libfdk-aac編解碼代碼示例。 示例 編碼 編碼封裝類CAACEncoder適用於RTP流媒體應用,設置的AAC編碼規格爲AAC

原创 編譯libfdk-aac

經驗的誤區 fdk-aac項目中並沒有直接提供vs下的編譯工程,也沒有CmakeList 腳本。所以我憑經驗判斷,源碼是需要在mingw環境下編譯。正是這種直觀,簡單的判斷,直接在編譯上挖了個坑。 我用mingw很順利編譯出了li

原创 對海康28181攝像頭PS流解碼的支持(三)

  上次分析處理PS流的結構後,仔細觀察了下具體的PS包結構,如下圖:   在pes包中跳過pes header後即是h264的碼流了,如圖圓圈所示。頭四個pes包攜帶h264幀類型即爲sps,pps,sei和I幀,如圖小圈標記的。解析

原创 AAC及其封裝格式

背景 最近在媒體庫中需要加入AAC,要求能與華爲的某型號IP語音通過AAC對通。 這個需求的功能並不複雜,而難在對AAC的封裝格式標準及編解碼庫的使用,需要有一個系統性的認識。 AAC標準光編碼規格就有好幾種,並且針對不同的場景衍

原创 徹底弄懂I420格式

YUV的概念 YUV 和我們熟知的 RGB 類似,是一種顏色編碼格式。它主要用於電視系統和模擬視頻鄰域(如 Camera 系統)。YUV 包含三個分量,其中 Y 表示明亮度(Luminance 或 Luma),也就是灰度值。而