原创 SurfaceView與TextureView 一、SurfaceView 二、 TextureView 三、SurfaceView vs TextureView

SurfaceView與TextureView是Android做視頻開發是必定要用到的兩個控件,它們的特性和使用場景有什麼區別。先來概括如下: Surface 可以簡單理解爲內存中的一段繪圖緩衝區 SurfaceView是一個有自己Sur

原创 音視頻開發之旅(53) - Java併發編程 之 synchronized

目錄 synchronized的使用方式 synchronized的原理 線程的等待、中斷與喚醒 資料 收穫 一、synchronized的使用方式 關鍵字 synchronized可以保證在同一個時刻,只有一個線程可以執行某個方法或者

原创 音視頻開發之旅(52) - Java併發編程 之內存模型與volatile

目錄 JVM內存結構和內存模型 併發編程中的三個概念與重排序 happens-before原則 volatile原理 volatile使用場景 資料 收穫 一、JVM內存結構和內存模型 1.1 JVM內存結構 圖片來自圖書《深入理解J

原创 音視頻開發之旅(51)-M3U8邊緩存邊播放

目錄 MP4的“問題” m3u8是什麼 m3u8的好處 源碼分析 擴展思考:mp4能不能像m3u8一樣進行分片緩存吶? 資料 收穫 一、MP4的“問題” 我們上面兩篇邊緩存邊播放之AndroidVideoCache和邊緩存邊播放之緩存分

原创 音視頻開發之旅(50)-邊緩存邊播放之緩存分片-物理文件空洞方案

目錄 什麼是緩存分片 爲什麼要緩存分片 如何實現 資料 收穫 一、什麼是緩存分片 我們在上一篇介紹AndroidVideoCache時,知道它會一直下載數據直到完全下載。這會帶來流量的浪費。比如一個5MB的視頻,碼率是2Mb/s,共有5

原创 音視頻開發之旅(49)-邊緩存邊播放之AndroidVideoCache

目錄 背景 AndroidVideoCache簡單使用 實現原理 源碼分析 AndroidVideoCache的不足 資料 收穫 一、背景 播放音視頻時,播放器數據的請求是由播放器內部發起的,我們只是提供了一個url,而不能控制數據的請

原创 Android基礎進階 - 消息機制 之Native層分析

目錄 基礎知識簡介 Linux eventfd事件等待/響應機制 Linux IO多路複用epoll Android消息機制Native層分析 nativeInit流程 nativePollOnce流程 nativeWake流程

原创 Android基礎進階 - 消息機制 之ThreadLocal

目錄 ThreadLocal是什麼 如何使用ThreadLocal ThreadLocal源碼分析 消息機制中Looper中的ThreadLocal使用 資料 收穫 上一篇我們分析了Anrdoid消息機制的實現,其中關於ThreadLo

原创 Android基礎進階 - 消息機制

目錄 Android消息機制流程 Handler Message MessageQueue Looper HandleThread 資料 收穫 篇外話 在“音視頻開發之旅系列”之外,想把自己比較薄弱的Java&Android基礎也抽時間

原创 音視頻開發之旅(45)-ExoPlayer 音頻播放器實踐(一)

通過上一篇的學習實踐,我們瞭解了ExoPlayer的優缺點以及基本用法,今天我們進入ExoPlayer的音頻播放實踐,我們來一起實現一個簡單的音頻播放器。 目錄 媒體播放框架MediaSession MediaSession框架+Ex

原创 音視頻開發之旅(44)-ExoPlayer介紹及簡單使用

目錄 ExoPlayer基本介紹 ExoPlayer的基本使用 遇到的問題 資料 收穫 從這篇開始我們進入階段五 —— 一些音視頻開源項目的學習使用分析,今天我們進入ExoPlayer部分的學習實踐 一、ExoPlayer基本介紹 1.

原创 音視頻開發之旅(43)-光照基礎(二)

目錄 實踐(環境光、漫反射光、鏡面反射光) 資料 收穫 上一篇我們學習實踐了關照基礎的基本概念和立方體的實現。有不清楚的可以先進行回看。 這篇我們來光照基礎的具體實踐 一、光照基礎實踐 原始立方體效果 1.1、環境光(Ambient

原创 可持續成長的一些底層邏輯

最近又一個同事離職去了BAT,雖然共事4年多了,但是也是最近一年纔開始多些了合作和交流,今天反思他們的行事方式,重新梳理下一些關於職業成長上可持續成長的一些底層邏輯。 一、什麼是可持續成長 可持續成長也可以說是終身成長的具體實現。可持續、可

原创 音視頻開發之旅(42)-光照基礎(一)

目錄 光照相關基本知識 實踐 資料 收穫 效果如下: 一、光照相關基本知識 經典光照模型通過單獨計算光源成分得到綜合光照效果,然後添加到材質表面上特定點。這些成分包括環境光(Ambient Lighting)、漫反射光(Diffu

原创 音視頻開發之旅(41)-天空盒

目錄 天空盒的實現原理 具體代碼實現 資料 收穫 效果如下 今天我們學習實踐天空盒,天空盒的技術本身比較簡單,但是卻可以做出來很多比較天空、大山、大海、以及VR看房等效果。可以作爲背景動態移動,也可以跟隨手勢或者傳感器等進行移動變換