原创 在Android Studio 3中自動產生jni頭文件的方法

前言 最近開發一個需要支持native的項目,開發環境已經遷移到Android Studio,現在的最新版本是3.3.2,前期我在博文 https://blog.csdn.net/ericbar/article/details/80

原创 編譯Android版的WebRTC

寫在前面 最近有興趣研究一下 webrtc,由於這幾年一直有基於 chromium 瀏覽器的源碼開發,在 src/third_party 下是能看到 webrtc 的目錄的,只是一直沒有真正單獨編譯過 webrtc,國慶期間在家閒着編

原创 移植ffplay媒體播放器和sdl2到Android平臺

前言 前述博文《基於FFmpeg和Android的音視頻同步播放實現》中,我們按照自己的方法實現了一個簡單的媒體播放器,並做了音視頻同步。但是這個程序在播放更多碼流時,遇到了一些問題,包括視頻解碼問題,同步時視頻卡頓等。我們在博文《在ub

原创 通過FFmpeg解碼和OpenGL的YUV轉RGB實現Android視頻播放

前言 在我的博文 https://blog.csdn.net/ericbar/article/details/80506390 中,我們在Android平臺上,實現了通過FFmpeg在native(C/C++)層進行視頻解碼,並通過Ope

原创 基於FFmpeg和OpenSL ES的Android音頻播放器實現

前言 在以前的博文中,我們通過FFmpeg解碼,並基於OpenGL ES完成了視頻的渲染。本文我們將基於OpenSL ES完成native音頻的注入播放。 OpenSL ES也是The Khronos Group Inc組織制定的一個音

原创 C語言中的fprintf和printf區別在哪?

原型 fprintf的函數原型爲: int fprintf( FILE *stream, const char *format, [ argument ]...); 而printf的函數原型爲: int printf( const cha

原创 FFmpeg庖丁解牛系列之dict模塊

關於dict模塊 由於C語言不像C++和JAVA,沒有key/value鍵值對的高級實現,所以FFmpeg專門寫了一個dict模塊(AVDictionary字典)用於簡單的key/value存儲。dict模塊相對比較簡單,其代碼實現主要位

原创 圖像色彩編碼YUV(YCbCr)的基本知識

參考地址 https://www.cnblogs.com/lifan3a/articles/4930182.html YUV與YCbCr的定義 YCbCr是DVD、攝像機、數字電視等消費類視頻產品中,常用的色彩編碼方案。YCbCr 有時會

原创 基於eclipse進行ndk開發的環境配置

前述 雖然我們在其他的博文中(如https://blog.csdn.net/ericbar/article/details/76602720),早就用到了ndk,但如果想在Android設備運行包含這些so的應用程序,還需要將這些so打包

原创 OpenGL之EGL入門知識

參考博文 本來材料參考下述博文,感謝作者 : https://blog.csdn.net/ba_jie/article/details/6370701 概述 EGL是由Khronos Group提供的一組平臺無關的API,它的主要功能如

原创 C語言帶顏色的printf/fprintf打印

引子 C語言中默認的printf打印都是一種顏色的,有時候爲了突出顯示其中的信息,避免重要的警告(warning)和錯誤(error)信息淹沒在其他不重要的log中,有必要區別不同信息級別的字體顏色。 格式 printf("\033[字背

原创 FFmpeg庖丁解牛系列之log模塊

引子 注:本文代碼基於FFmpeg-3.4.2 av_log日誌系統是FFmpeg裏最基本的一個模塊,主要提供控制檯打印輸出,與此相關的源文件主要有如下幾個: libavutil/log.c libavutil/log.h libavut

原创 FFmpeg庖丁解牛系列之option模塊

關於option模塊 option是FFmpeg中另一個很基礎的模塊,相對於log模塊,代碼量上要複雜一些。主要代碼實現在如下兩個文件中: libavutil/opt.c libavutil/opt.h 關於AVOptions的介紹,直接

原创 基於FFmpeg和SurfaceView實現Android原生窗口(ANativeWindow)的視頻播放

實現需求 只演示視頻解碼和顯示,不進行音頻解碼,也不做音視頻同步,每兩幀視頻之間通過固定延時來間隔,所以視頻播放時存在偏慢和偏快的問題; 基於FFmpeg來進行解碼,而不是基於Android自帶的MediaPlayer播放器,也不基於A

原创 FFmpeg視頻解碼中的YUV420P格式

參考文章 在做基於FFmpeg解碼的視頻播放時,需要涉及到幀數據存儲的YUV與RGB格式,所以瞭解了一下,參考下述博文。 https://blog.csdn.net/lanxiaziyi/article/details/74139729