原创 Ubuntu(linux) 下編譯ffmpeg

ffmpeg是基於Linux開發的,所以在linux系統(Ubuntu)上編譯ffmpeg其實很簡單。下面介紹如何在Ubuntu上編譯基本的ffmpeg庫(不帶其他擴展的解碼編碼庫)。 1、準備ffmpeg源代碼 方法很多,就不多說了,

原创 使用ffmpeg解碼音頻文件到PCM格式

最近忙於使用ffmpeg播放音樂文件的項目,現將開發經驗總結如下: 一、解碼音樂文件的大致流程如下: 1,打開音樂文件,調用av_open_input_file() 2,查找audio stream,調用av_find_stream_in

原创 用實例講解RSA加密算法(精)

       RSA是第一個比較完善的公開密鑰算法,它既能用於加密,也能用於數字簽名。RSA以它的三個發明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,這個算法經受住了多年深入的密碼分

原创 CSP介紹、以及使用CryptoAPI枚舉CSP並獲取其屬性

CSP,全名爲“加密服務提供者(Cryptographic Service Provider)”,是微軟定義的一套密碼服務API。目前常用的密碼規範或者標準有3套:CSP,PKCS#11和國密標準。前兩者主要是爲RSA算法提供服務,當然P

原创 通過OpenSSL解析X509證書基本項

       在之前的文章“通過OpenSSL解碼X509證書文件”裏,講述瞭如何使用OpenSSL將證書文件解碼,得到證書上下文結構體X509的方法。下面我們接着講述如何通過證書上下文結構體X509,獲得想要的證書項。本文先講述如何獲

原创 CSP:使用CryptoAPI解碼X509證書內容

        微軟的CryptoAPI提供了一套解碼X509證書的函數,一個X509證書解碼之後,得到一個PCCERT_CONTEXT類型的結構體指針。通過該結構體,我們就可以獲取想要的證書項和屬性等。         X509證書文件

原创 CSP:使用CryptoAPI解析X509證書基本項

        在之前的文章“CSP:使用CryptoAPI解碼X509證書內容”裏,講述瞭如何使用CryptoAPI將證書文件解碼,得到證書上下文句柄PCCERT_CONTEXT的方法。下面我們接着講述如何通過證書上下文句柄,獲得想要的

原创 ffmpeg解碼audio文件的時候,實現seek功能(即解碼指定時間位置的數據)

ffmpeg解碼的時候,往往需要seek功能,直接跳到所關心的時間位置進行解碼。比如製作播放器的時候,可以seek到任意位置播放。 我們可以通過ffmpeg API av_seek_frame()來定位解碼的位置,該函數能根據設定的時間,

原创 ffmpeg解碼音頻數據時,進行重採樣(即改變文件原有的採樣率)

我們使用ffmpeg解碼音頻的時候,往往需要改變原音頻的採樣率,即需要重採樣。 比如一音樂文件的採樣率22050,而播放端往往是固定的採樣率,比如44100。在這種情況下,如果把解碼出來的數據直接播放,會產生快進的效果。這個時候就需要對解

原创 Android:在Eclipe中使用NDK編譯C/C++工程

Android開發中,如果使用C/C++開發JNI,必須使用Andriod NDK編譯成*.so文件,這樣Android的java應用層才能調用。 使用NDK編譯C/C++代碼,網上的通常做法是使用命令行(或者終端)輸入編譯命令:NDK-

原创 數字安全證書(CA證書)介紹

數字安全證書(CA證書)是由可信任的第三方機構(CA中心)頒發給個人或者企業用戶,用來驗證身份、數據簽名、數據加密等操作。CA證書是整個PKI體系的核心,目前國內CA中心由國家密碼管理局管理,基本上每個省都有一個CA中心,用來簽發省內CA

原创 Windows下USB磁盤開發系列二:枚舉系統中所有USB設備

上篇 《Windows下USB磁盤開發系列一:枚舉系統中U盤的盤符》介紹了很簡單的獲取系統U盤盤符的辦法,現在介紹下如何枚舉系統中所有USB設備(不光是U盤)。 主要調用的API如下: 1,調用SetupDiGetClassDevs()

原创 通過OpenSSL解碼X509證書文件

        在Windows平臺下,如果要解析一個X509證書文件,最直接的辦法是使用微軟的CryptoAPI。但是在非Windows平臺下,就只能使用強大的開源跨平臺庫OpenSSL了。一個X509證書通過OpenSSL解碼之後,

原创 Windows下USB磁盤開發系列四:SetupDiEnumDeviceInterfaces()返回ERROR_NO_MORE_ITEMS 259錯誤代碼的原因

在調用API SetupDiEnumDeviceInterfaces()查詢USB設備接口的時候,遇到了259的錯誤代碼:ERROR_NO_MORE_ITEMS。開始不得其解,後來仔細察看了相關的msdn,發現是我調用SetupDiGet

原创 Windows下USB磁盤開發系列一:枚舉系統中U盤的盤符

有個時候我們需要區分系統磁盤中,哪些是U盤,這樣我們在訪問的時候可以區別對待。具體方法如下: 1,調用GetLogicalDrives()返回系統盤符標記位 API GetLogicalDrives()將返回一個DWORD類型的標記值,將