原创 36.Android Studio下FFmpeg的編譯和使用(搭建crtmpserver服務器並使用ffmepg,vlc測試推流播放)

開發環境 Ubuntu 16 64位+Windows10 開發過程 1.登錄Ubuntu切換到root用戶(減少權限問題),執行以下命令 apt update 它的作用是同步 /etc/apt/sources.list 和 /etc/ap

原创 12.C++ string 操作

字符串初始化 void main() { string s1 = "111111"; string s2("22222"); string s3 = s2; cout << s1<< endl; co

原创 35.Android Studio下FFmpeg的編譯和使用(完結.封裝,多線程,和模塊化處理)

前言 好久未更新 之前的幾篇文章介紹了音視頻相關概念,FFmpeg的交叉編譯,FFmpeg Api解封轉 解碼 音頻重採樣和視頻播放相關的功能,以及分別介紹了OpenGLES Shader播放視頻和 OpenSLES播放音頻的實現,今天的文

原创 我的博客即將入駐“雲棲社區”,誠邀技術同仁一同入駐。

我的博客即將入駐“雲棲社區”,誠邀技術同仁一同入駐。

原创 35.Android Studio下FFmpeg的編譯和使用(九.OpenGLES播放視頻)

項目源碼 OpenGL ES 2.0 中文文檔 完整代碼,一切盡在註釋中 extern "C" JNIEXPORT void JNICALL Java_com_rzm_ffmpegplayer_FFmpegPlayer_initOpenGL

原创 34.Android Studio下FFmpeg的編譯和使用(八.OpenSLES播放音頻)

項目源碼 OpenSL ES 文檔 OpenSLES:(Open Sound Library for Embedded Systems) OpenSLES是跨平臺、針對嵌入式系統精心優化的硬件音頻加速API。使用OpenSLES進行音頻播放

原创 33.Android Studio下FFmpeg的編譯和使用(七.FFmpeg像素格式轉換和音頻重採樣)

像素格式轉換 像素格式描述了像素數據存儲所用的格式。定義了像素在內存中的編碼方式。FFmpeg支持的像素格式主要是rbg和yuv兩種,具體可以在結構體AVPixelFormat中看到 /** * Pixel format. * * @

原创 32.Android Studio下FFmpeg的編譯和使用(六.FFmpeg音視頻解碼)

項目源碼 解碼分爲軟解碼和硬解碼,那麼什麼是軟解碼和硬解碼,二者有什麼區別?簡單來說,在於是否使用CPU進行解碼,最初視頻解碼都是通過CPU進行的,那時候視頻分辨率較低,CPU完全可以勝任解碼的工作,但是隨着高清視頻的出現,使用CPU進行解

原创 31.Android Studio下FFmpeg的編譯和使用(五.FFmpeg解封裝)

項目源碼 Android Studio的開發環境已經準備好,接下來開始正式的寫ndk代碼,首先創建一個FFmpeg工具類,添加native方法 import android.view.Surface; public class FFmpeg

原创 30.Android Studio下FFmpeg的編譯和使用(四.Android Studio ndk開發環境和CMakeLists腳本編寫)

項目源碼 1.環境配置 ffmpeg庫已經編譯好了,接下來準備將so引入Android studio進行開發 我們創建一個新的項目,注意在創建過程中這幾個選項的勾選 6C~L[SE8UA3Z]JEAFB~CU24.png 勾選

原创 29.Android Studio下FFmpeg的編譯和使用(三.FFmpeg配置和編譯腳本)

編譯過程中涉及到很多ndk中的so庫和頭文件以及交叉編譯的工具,在命令執行的時候會在ndk相應的目錄下去查找,所以我們可以使用export命令事先將這些路徑設置到環境變量,使用的時候可以很方便的找到 //NDK加入環境變量,以我的ndk存放

原创 28.Android Studio下FFmpeg的編譯和使用(二.Ubunto系統環境配置)

軟件準備 之前編譯ffmpeg的時候是購買了阿里雲的輕量應用服務器,在Ubuntu環境下進行的。不過這次的編譯不打算再去買了,直接下載Ubuntu鏡像,在虛擬機上進行操作。創建虛擬機需要下載wvware這個軟件,我的雲盤中提供下載地址(vm

原创 27.Android Studio下FFmpeg的編譯和使用(一.音視頻基礎知識概要)

前言 之前寫了很多關於ndk的文章,也以FFmpeg的編譯爲例大概的講述了一次ndk開發從編譯到使用的過程,但是內容過於分散,而且有些東西已經過時,比如eclipse工具,比如ndk-build的編譯方式以及之前ffmpeg使用的2.x的版

原创 22.源碼閱讀(jdk1.6 HashMap源碼和原理分析)

HashMap 底層採用數組 + 鏈表的的實現方式來降低數據插入和查詢的時間複雜度,理想狀態下可以實現時間複雜度位O(1),今天就從源碼的角度看一下它是如何實現的。我們從它的兩個關鍵方法put和get入手。 put方法 public

原创 19.OrientationHelper源碼分析-RecyclerView輔助類

OrientationHelper OrientationHelper是對RecycleView中子View管理的輔助類,它是一個抽象類,類中定義了獲取View佈局信息的相關方法。雖然是抽象類,但是我們使用中並不需要去繼承實現,你會發現cr