原创 epoll機制總結

看了一週的linux epoll源代碼做一個總結。 epoll源代碼在eventpoll.c裏。首先是調用epoll_create,內部調用sys_epoll_create,這個函數主要給epoll分配文件描述符fd和文件結構體struc

原创 c語言指針的小問題

一直以爲自己對指針瞭如指掌今天居然被指針卡住了。打算用qsort對一個結構體排序,結構體如下 typedef struct record_duration_element { int start_times; int e

原创 pjsip小結

最近一個月學了下pjsip的知識,小結下: pisip是一個sip的庫,相比於osip和exosip封裝層次比較高,實現起來也比較簡單,並且集成了多媒體的功能,不僅僅是一個sip庫。學習sip可以下載一些成熟的商用軟件個人推薦x_lite

原创 使用c語言操控mysql總結

該程序服務器端使用mysql數據庫,c語言操控。qt其實也有操控mysql的api,但當時寫程序還沒學到那,只學過原生態api,所以就使用c了。 mysql在vs2013下的配置:一般mysql安裝後都有c語言操控庫,在mysql安裝目錄

原创 exosip鑑權及使用

剛剛調試成功exosip鑑權,現在總結下。1.sip註冊。流程:首先客戶端發送註冊包不帶鑑權信息,服務器探測到不帶鑑權信息的register包會回覆401,後客戶端回覆帶鑑權信息的註冊包,服務器驗證密碼和賬號,通過就返回200成功包,不通

原创 exosip資料記錄

http://sipcommunicator.group.iteye.com/group/topic/8693 SDP中m參數中IN是 INTERNET類型,目前僅支持IN

原创 ffmpeg常見參數的設置

用ffmpeg編程對一些參數的設置一直是複製黏貼,至於到底爲什麼這麼設置,不這麼設置有什麼後果不是特別的瞭解。這幾天測試了下調整ffmpeg轉碼參數,看看不同參數對視頻編質量或大小的影響,並進行一定的分析。首先是編碼器參數的設置。視頻:p

原创 c++線程使用

一直習慣用c語言的方法創建線程,即pthread_create和_beginthread,但總覺得這樣不夠面向對象。c++創建線程有兩種方法:基於對象的方法和麪向對象的方法。面向對象創建線程相比較面向過程的優點是可以複用一些公共函數,像線

原创 c++即時通訊程序

記錄下我上大學的第一個程序項目。第一次寫程序,遇到了好多挫折,也學到了好多的書本學不到的知識。 該程序主要是仿qq,實現了qq基本聊天的大部分功能包括視頻聊天,語音消息,圖片消息,添加好友,文件離線發送上傳下載,好友分組,羣聊等。網絡方面

原创 ffmpeg開發:qt上添加轉換進度條

FFMPEG配界面之視音頻轉換進度。FFMPEG是一個非常強大的視頻處理庫,幾乎所有視頻播放器處理軟件都離不開ffmpeg。下面來說說ffmpeg如何用qt顯示視頻處理的進度。 說到進度,qt首先就會考慮到qprogressbar,qpr

原创 ffmpeg開發:視頻數據在qt顯示

使用SDL在Qt窗口上顯示。sdl1在Qt直接使用putenv窗口HWND就行,sdl2廢除了這個api。 sdl2該怎麼用呢?其實也很簡單。先獲取Qt的窗口句柄,windows下QWidget.winId()獲取窗口句柄強制轉化爲HWN

原创 ffmpeg開發:關於對錯誤pts () < dts () in stream的解決方法

關於對錯誤pts () < dts () in stream的解決方法。出現這種錯誤是由於視頻pts大於dts。pts是視頻播放時間,dts是送入解碼器解碼時間。所以一幀視頻播放時間必須在解碼時間點之後。解決方法是進行判斷:if(pack

原创 qt+ffmpeg仿格式工廠

花了將近一個月做的項目。這個程序實現了格式工廠的基本功能:視頻,音頻,圖片的格式轉換,視音頻拼接,裁剪,混流,分流,視頻特效,添加字幕,支持視頻錄像帶有一定的特效效果。內置視頻播放器,實現視頻播放暫停快進,快退,滑動條拖動視頻進度。程序使

原创 ffmpeg開發:關於對Application provided invalid的解決方法

關於對Application provided invalid的解決方法,這個錯誤是ffmpeg開發中非常常見的錯誤,之前使用別人代碼常常提示這個錯誤,百度基本找不到相關解決方法,當時也非常崩潰,但靜下心來仔細研究這個錯誤,發現這個錯誤

原创 libcurl的一些坑

最近用libcurl+qt做了一個下載器,踩過不少坑,我來分享下自己遇到的坑,其他人都不要在犯了。 1.在libcurl中,設置進度條用curl_easy_setopt(curlhandle, CURLOPT_XFERINFOFUNCTI