原创 Kotlin協程的迷惑

Kotlin作爲谷歌強力推廣的Android編程語言,是運行在jvm上的,在很多地方可以看做java語言披了一層語法糖,很多地方其實和java是相通的,包括各種庫的使用。不過倒是有一個新東西:協程,這個對於java程序員來說可能就

原创 基於FFmpeg的簡單Android視頻播放器

文章目錄1. 模塊分割2. 解碼器實現3. 播放控制4. 音視頻同步5. 總結 之前的博客中已經使用了FFmpeg進行音頻文件的解碼,並且基於OpenSLES實現了一個簡單的音樂播放器。最近正在學習《音視頻開發進階指南》,看到了

原创 數字信號處理5:FIR濾波器設計

文章目錄1. 濾波器初識2. 最直觀的濾波方式:頻域濾波3. 傅里葉變換中的加窗4. FIR濾波器設計5. 總結 之前的一系列博客中,詳細分解了從卷積到FFT的相關知識,不過那些屬於理論,是爲了讓我們清楚認識到信號處理的本質。

原创 數字信號處理4:採樣定理

文章目錄1. 卷積定理2. 採樣定理推導3. 傅里葉變換的頻域標度 採樣定理又稱奈奎斯特定理,它規定了連續信號抽樣成爲離散信號時的採樣率與信號最大頻率之間的關係,那就是: 對於連續信號x(t)x(t)x(t)進行抽樣時,抽樣信號的

原创 Android音樂播放器-使用FFmpeg及OpenSLES

文章目錄一、準備工作二、目標三、整體架構四、OpenSLES五、解碼六、狀態通知 在之前的文章《FFmpeg解碼音頻代碼》中,已經實現了使用FFmpeg解碼音頻爲PCM。這次我們利用FFmpeg以及OpenSLES來實現一個簡單

原创 數字信號處理2:傅里葉變換

文章目錄一、傅里葉變換存在的理論基礎二、週期信號的傅里葉級數推導三、連續非週期信號的傅里葉變換推導四、離散非週期信號的傅里葉變換(DFT)推導五、相位六、通俗理解傅里葉變換七、DFT的代碼實現 在上一篇文章中我們推導了卷積。這一篇

原创 數字信號處理3: 快速傅里葉變換(FFT)(含代碼)

文章目錄1. FFT推導2. FFT爲什麼快?3. 一些加速措施3.1 查表法計算三角函數3.2 奇偶分解4. FFT代碼 在之前的文章《傅里葉變換》中,我們已經推導了連續傅里葉變換和離散傅里葉變換。由於計算機的發展,離散傅里葉變

原创 FFmpeg解碼音頻代碼

工程請訪問DecodeTest。用c++寫的,使用FFmpeg-4.1.0。比較完善的是OfficalDecodeAudio.cpp,它是我研究了一下ffplay.c的源碼得來的。該代碼按照統一的44.1kHz、雙聲道、16位in

原创 最新版FFmpeg移植Android:編譯so庫(基於NDK r20和FFmpeg-4.1.0)

FFmpeg是非常強大的編解碼庫,支持相當多的格式。如果你仔細看一下手機中各種播放器的許可條款,一定不會缺少FFmpeg的身影。 但是網絡上FFmpeg移植的資料都非常少,很多還是使用很老的庫,比如使用2.xx版本的FFmpeg,

原创 Android NDK開發: 通過C/C++調用第三方so庫

文章目錄一、編寫so庫代碼二、安裝Android NDK三、編譯so庫3.1 編輯Android.mk3.2 編輯Application.mk3.3 編譯四、集成到Android工程中 上一篇打包so庫及jar包的博客我講了如何

原创 備忘:gcc在linux下打包so庫並調用

環境:Ubuntu, GCC 切換到準備編譯的代碼文件夾中,輸入g++ *.cpp -fPIC -shared -o libname.so,name隨便起,這時會生成一個libname.so文件。 把so文件複製到準備用的工程中

原创 淘寶8850h小主機黑蘋果教程

1. 硬件概況 CPU:i7-8850H,6核12線程 GPU:UHD630 聲卡:ALC269 視頻接口:miniDP、HDMI 系統版本:mojave14.4 2. 安裝過程 (1) 使用etcher向U盤寫入鏡像,該鏡像從黑

原创 Android在string.xml中定義html文檔並加載顯示,以及攔截WebView鏈接事件

一、如何在string.xml中定義html文檔 首先最好自己在外部新建一個html文件,然後開始寫自己的內容。並且在瀏覽器中預覽效果。 首先預先編寫一個簡單的html文檔: <html> <head> <

原创 Android NDK開發:打包so庫及jar包供他人使用

文章目錄一、目標及方式二、新建調用方工程三、新建庫module四、爲庫模塊添加c++支持4.1 準備CMakeLists文件4.2 修改sdk的gradle腳本4.3 編寫c++及java代碼4.4 測試庫五、打包so庫六、打包j

原创 數字信號處理1:卷積

文章目錄一、前言二、線性時不變(LTI)系統三、衝激函數四、階躍函數五、卷積5.1 卷積的推導5.2 LTI系統卷積的性質5.2.1 交換律5.2.2 分配律5.2.3 結合律 數字信號處理是音視頻開發所必不可少的一項技能,我會從本