原创 掌握幾種linux工具讓程序更穩定

總結幾種linux下觀察程序使用資源情況的工具,包括:CPU,內存,fd有無泄漏,IO有無異常(比如日誌異常輸出),網絡IO有無異常。通過這幾種工具監控程序運行時資源有無異常,讓程序更加穩定。 CPU使用率 最常用的命令是top,

原创 python實現進程管理類

以下代碼實現了一個進程管理類,功能包括進程的啓動及監控(類似看門狗功能,在進程崩潰時會再將它拉起來) #!/usr/bin/env python # -*- coding: utf-8 -*- import shlex impor

原创 io_service對象的線程模型

io_service對象的線程模型體現在對io_service對象的run方法調用形式,不同的調用形式,會影響io_service post和dispatch方法對任務的分發方式。 一個io_service對象,一個線程調用該對象

原创 boost asio的基本知識點

socket編程的基本步驟 socket編程的基本步驟羅列如下,只是列出一個基本流程,不涉及到錯誤處理,io操作的方式。萬變不離其宗,asio中的最基本步驟也是如此,它對基本的socket api進行了封裝。 UDP 服務端流程 創

原创 cmake 資料整理

記錄了一些cmake的資料,以下資料都是鏈接,直接點擊即可。 cmake入門 cmake中預定義變量文檔 cmake中 configure_file函數的用法 通過cmake判斷g++編譯器是否支持C ++11 如何使cmake生成

原创 海康28181攝像頭接入的注意點

對一個海康攝像頭以28181協議接入(海康攝像頭設備級的接入,非系統級別接入),分爲兩步: 通過sip invite將海康的ps流拉出來,由於是設備級的接入,所以直接對攝像頭進行invite發起點播。 對拉過來的ps流進行解碼。

原创 windows下編譯x264庫

背景 現在的x264需要通過mingw環境來進行編譯,我要編譯出64位版本和32位版本的靜態,而mingw只是32位環境,所以我選擇通過ming-w64+msys2作爲編譯環境。 安裝msys2和MinGW-W64 我們先安裝msys

原创 視頻流jtter buffer實現的難點

背景 在項目中遇到這樣一個問題,sip客戶端通過監控網關去點播海康的攝像頭,發現圖像出來的很慢。抓包發現,碼流的最開始是攜帶sps,pps及關鍵幀的,那麼可以判斷出問題可能是如下兩點原因: 終端中的媒體庫將收到的sps,pps及關鍵

原创 發佈了一門RTP for H264/265的課程

發佈了一門講解RTP協議課程,感興趣的同學可以看看 詳細講解了RTP協議,通過wireshark如何分析RTP碼流的問題 講解通過wireshark分析H264碼流 講解H264/265的FU-A 的封包模式 通過代碼講解了如果對F

原创 RTP頭的解析及大小端處理的細節

RTP頭的解析及大小端處理的細節 在看如何解析RTP頭之前,先複習下大端和小端的概念,再分析如何解析RTP頭 大端和小端 在之前本以爲大端和小端只是針對的多字節,其實在一個字節內的比特序也有大小端的概念,這裏列兩個結論 大小端是不同的C

原创 C++11 chrono庫在音視頻系統中的應用

基本概念 chrono包括三個基本的概念:間隔(Duration),時間(Clock),時間點(Time Point),通過這三個基本概念可以很好的將時間處理抽象出來。 引用C++11的文檔說明 Durations They me

原创 RGB數據的處理

RGB數據的處理 基本概念 分辨率爲640*480的圖像,其像素點的個數爲 widthxheight,即爲640x480 = 307200 二值圖像 每個像素通過一位來存儲即爲二值圖,取值只有0和1。 灰度圖像 在二值圖像中加入許多

原创 用circular_buffer實現的播放緩存隊列

背景 在我們的一個項目中,開音視頻會議時,音頻比視頻慢了將近一秒,由於歷史問題,會議服務器沒法進行改動,所以要求在解碼端做這樣一個兼容處理,主動緩存視頻達到將視頻延時播放的目的,從而實現音視頻的同步。延時的大小可配。 解碼播放的基本流程

原创 JavaScript基礎語法

以下列出的是我認爲在javascript學習中,應該要關注的一些要點,參考書籍<< Javascript高級程序設計 >> 類型檢測 鑑於js是鬆散類型,所以我們往往需要對變量進行類型檢測。 -基本類型的類型檢測 typeof操作符用於

原创 boost中的指針容器

boost中的指針容器 基本概念 在C++中用容器來管理動態分配的內存,首先想到是會通過標準容器來存儲boost::shared_ptr,如下代碼: #include <boost/shared_ptr.hpp> #include