原创 音視頻開發之旅(62) -Lottie 源碼分析之json解析

目錄 Lottie能做什麼 Lottie 動畫使用調用流程 Json字段介紹 解析爲LottieComposition 資料 總結 一、Lottie能做什麼 在實現動畫方面,原生的方式開發成本比較高,airbnb開源的lottie有An

原创 音視頻開發之旅(63) -Lottie 源碼分析之動畫與繪製

目錄 動畫和繪製的流程 LayerView樹 ShapeLayer的分析 Lottie優劣以及rLottie、PAG的介紹 資料 收穫 上一篇我們學習分析了Lottie的json解析部分. 這篇我們分析的動畫和渲染部分。 分析的重點:如

原创 音視頻開發之旅(66) - 音頻變速不變調的原理

目錄 聲音的基本知識 時域壓擴(TSM)的原理 波形相似疊加(WSOLA) 資料 收穫 音頻的原始pcm數據是由 採樣率、採樣通道數以及位寬而定。常見的音頻採樣率是44100HZ,即一秒內採樣44100次,採樣通道數 一般爲2, 代表雙

原创 音視頻開發之旅(64) - 部分android手機上編碼的視頻在ios上無法播放

目錄 問題描述 問題分析 問題原因 問題解決 資料 收穫 一、問題描述 用小米11 錄製視頻上傳後,在iPhone的Safari瀏覽器或者應用的H5中無法播放,而android設備上的確實可以正常播放。 同樣的操作,在一些其他andro

原创 音視頻開發之旅(65) -帶着問題學習實踐CMake

目錄 使用CMake創建一個可執行程序 創建一個動/靜態庫,並以庫方式使用 以源碼方式引入第三方庫,以多層目錄方式使用 跨平臺共用lib第三庫,改變代碼的層級結構 其他的一些小細節(項目實踐中遇到的問題) 資料 收穫 CMake是我們C

原创 音視頻開發之旅(67) - 變速不變調之sonic源碼分析

目錄 基音週期、濁音的概念 Sonic源碼分析 資料 收穫 上一篇我們學習了音頻變速不變調的原理以及WSOLA波形相似疊加算法進行時域壓擴處理。其中在尋找相似幀方面,Sonic採用AMDF(平均幅度差函數法)方法來進行尋找。 一、基音週

原创 音視頻開發之旅(61)- 調試分析FFmpeg (解碼部分的)常用結構體

上一篇我們分析了解封裝部分的常用結構體,這篇我們來學習分析解碼部分的常用結構體。 目錄 斷點分析ffplay解碼流程及關鍵結構體 (解碼部分)常用結構體以及之間的關係分析 資料 收穫 一、斷點分析ffplay解碼流程及關鍵結構體 還是從

原创 音視頻開發之旅(60) -調試分析FFmpeg (解封裝部分的)常用結構體

目錄 ffplay的斷點調試 (解封裝部分)常用結構體以及之間的關係分析 資料 收穫 工欲善其事,必先利其器,斷點調試,對我們梳理流程排查問題十分重要,可以ffmpeg的調試可以在XCode、VS code以及QT等ide上進行方便的調

原创 音視頻開發之旅(59)- 捕獲收集、定位分析 Native崩潰

目錄 Native崩潰有哪些類型 如何捕獲收集Native崩潰 如何分析定位Native崩潰 資料 收穫 我們知道Java崩潰是在Java代碼中出現了未捕獲異常,導致程序異常退出,常見的異常有:NPE、OOM、ArrayIndexOut

原创 音視頻開發之旅(58) -H.264 幀內預測

目錄 編碼流程和數據格式回顧 4 × 4亮度塊的9中預測模式 16 × 16亮度塊的4種預測模式 8 × 8 色度塊的4種預測模式 JM代碼 資料 收穫 一、編碼流程和數據格式回顧 我們先看下下圖來回顧下編碼流程 一個編碼圖像通常劃

原创 音視頻開發之旅(57) -如何方便的查看AndroidNative源碼

目錄 背景 Android源碼下載 源碼編譯及遇到的問題 使用CLion 導入 資料 收穫 一、背景 對Framework層的瞭解學習是我們進階的一個重要階段。通過 AS 查看 Framework 代碼體驗非常好,無論是索引還是界面都讓

原创 音視頻開發之旅(56) -H264/AVC基本結構

從這篇開始,我們進入H264的學習實踐,主要分三個階段 學習H264基本結構和碼流協議;2. 瞭解具體編碼壓縮技術;3. 分析瞭解相關開源庫 x264和h264bitstream。 這篇我們來一起學習H264的基本結構 目錄 H264

原创 adb logcat和grep命令的使用

在日常開發中Log的作用必不可少,AS中集成的logcat已經很方便, 但是有時候需要輸出的log數據量很大結果被沖掉了,這時就可能要把logcat輸出到文件,然後再進行分析。 這篇文章主要介紹了adb logcat命令行的使用以及結合gr

原创 音視頻開發之旅(55)-阻塞隊列與無鎖併發容器

目錄 阻塞隊列的定義和使用場景 阻塞的隊列的實現原理 簡單學習無鎖併發容器之ConcurrentLinkedQueue和CAS 資料 收穫 一、阻塞隊列的定義和使用場景 阻塞隊列(BlockingQueue)在隊列Queue的基礎上增加

原创 音視頻開發之旅(54) - Lock、重入鎖、讀寫鎖和Condition

目錄 Lock的意義和使用 同步器AbstractQueuedSynchronizer 重入鎖ReentrantLock 讀寫鎖ReentrantReadWriteLock Condition 一、 Lock的意義和使用 在Java 1