原创 使用FFmpeg進行屏幕錄像和錄音

有些時候我們需要對屏幕進行錄製,比如製作視頻教程,錄製直播等。然而這方面的軟件多是收費的,即使是免費試用版的還有水印,特別煩人。下面介紹使用FFmpeg進行屏幕錄製的方法。 Windows 先安裝dshow軟件 Screen Captur

原创 C++使用遞歸和非遞歸的方式實現二叉樹的遍歷

二叉樹是常見的數據結構,常見的有三種遍歷方式:前序遍歷(根→左→右)、中序遍歷(左→根→右)和後序遍歷(左→右→根)。使用遞歸的方式實現遍歷比較簡單,書上看到一個不使用遞歸的方法比較複雜,記錄一下。 二叉樹節點定義 typedef str

原创 通過OpenSSL命令來認識RSA算法

前言 OpenSSL是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。OpenSSL本身是一個基於C語言的庫,但是它也提供一個名爲openssl的可執行程序來

原创 RTP協議介紹以及C語言實現具有發送H.264視頻功能的RTP服務器

RTP封裝H.264視頻規範以及C語言實現 以前上學時間做嵌入式開發板Hi3516A的流媒體項目,現在又突然想起來,不想學過就忘了浪費了,所以又自己實現了一遍讀取本地視頻文件發送RTP視頻流的程序,算是總結一下。網上關於RTP的介紹實

原创 C調用C++庫和C++調用C庫的方法

C++調用C的靜態庫/動態庫 C++調用C的函數比較簡單,直接使用extern "C" {}告訴編譯器用C的規則去調用C函數就可以了。 CAdd.h int cadd(int x, int y); CAdd.c #include "CAd

原创 圖解分組密碼五大工作模式

在密碼學中,分組密碼操作模式是使用分組密碼來提供諸如機密性或真實性的信息服務的算法。基於分組的對稱密碼算法比如DES/AES算法只是描述如何根據祕鑰對一段固定長度(分組塊)的數據進行加密,對於比較長的數據,分組密碼工作模式描述瞭如何重複應

原创 【Android JNI】Native層解析Java複雜數據類型HashMap

前提 Java HashMap 是基於哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,並允許使用null值和null鍵。HashMap是存放引用類型數據的容器,只能存放引用數據類型,不能存放如int、long等基礎類型的數據。

原创 Makefile常用模板

做開發的特別是C/C++開發者一般都會用到Makefile,然而多數時候在公司做項目都不需要自己去寫Makefile,僅僅停留在能看懂的基礎上。因爲make命令編譯實在是太方便了,所以自己寫寫小項目用一用還是挺好的。網上關於Makefil

原创 【Android JNI】在C/C++中調用Java

JNI名詞解釋 jclass對應Java類的名字,jobject對應Java實例化後的對象,jfieldID對應Java類成員變量的ID,jmethodID對應Java類方法的ID。 JNI中對Java的調用,通常要先獲取jclass,

原创 【FFmpeg 3.x API應用三】音頻解碼

摘要 這篇文章介紹音頻解碼,示例程序是讀取一個mp3格式或者aac格式的音頻文件,解碼輸出爲未壓縮的pcm音頻文件。 初始化FFmepg和FormatContext 和視頻解碼一樣,先使用av_register_all註冊所有相關組件,然

原创 【Android JNI】從Java中調用C/C++

Android系統加載JNI Lib的方式 要想在Java中調用C的函數,必然要有一定的規則去映射二者的函數名,也就是加載JNI庫的方式,下面介紹這兩種方式。 JNI_OnLoad 當Android的VM(Virtual Machi

原创 【FFmpeg 3.x API應用一】視頻解碼

摘要 這篇文章介紹怎麼實現視頻解碼,具體步驟爲讀取Sample.mkv視頻文件,從中提取視頻流,然後解碼爲YUV圖像數據,把YUV數據存儲爲PGM灰度圖像,或者存儲爲YUV420p RAW格式視頻。 初始化FFmepg和FormatCon

原创 【FFmpeg 3.x API應用二】視頻編碼

摘要 這篇文章介紹使用FFmpeg實現視頻解碼,具體操作爲讀取上一節視頻解碼所生成的YUV420p格式視頻文件,對其進行H.264格式視頻編碼,並將編碼後的數據保存爲H.264裸流文件Sample.h264。 初始化FFmpeg 所有操作

原创 【FFmpeg 3.x API應用〇】基於VS2017的FFmpeg開發環境的搭建

準備工作 在Windows平臺上最強大的IDE非Visual Studio莫屬了,雖然本人也非常喜歡並經常用Clion寫一些小程序,鑑於VS的通用性還是選擇使用VS來學習FFmpeg開發,可以使用免費的VS2017 Comminity社區