當前位置:編程學習大全網 - 源碼下載 - 視頻錄制原理與實現

視頻錄制原理與實現

這篇博客應該是相當有分量的博客了。篇幅會比較長,因為內容很多。我盡力的想寫的詳細,而又不至於繁瑣。這之間的程度是很難把握的,話不多說 進入主題。首先,在這之前,需要對幾個類,以及他們的方法的有所了解。

MediaCodec

谷歌對這個類的描述如下,MediaCodec類可用於訪問底層媒體編解碼器,即編碼器/解碼器組件。它是Android底層多媒體支持基礎架構的壹部分(通常與MediaExtractor、MediaSync、MediaMuxer、MediaCrypto、MediaDrm、Image、Surface和AudioTrack壹起使用)。重點是 編碼解碼器,因為系統產生的數據 ,都是原始的數據,需要他進行處理。

原理

下面這張圖,只需要粗略看壹看,妳只需要知道 MediaCodec 有兩個ByteBuffer,壹個是輸入,壹個是輸出。這也很好理解。畢竟編碼解碼器,肯定是要妳給它舊數據,它編碼解碼完,還給妳壹個新數據。兩個ByteBuffer 就相當於兩個籃子,接受發送數據。

返回要用有效數據填充的輸入緩沖區的索引,如果當前沒有可用的緩沖區,則返回-1。如果timeoutUs == 0,該方法將立即返回;如果timeoutUs < 0,則無限期等待輸入緩沖區的可用性;如果timeoutUs > 0,則等待“timeoutUs”微秒。

這個方法呢,就是返回 輸入緩沖區的索引(mediaCodec可以通過索引找到緩沖區)。也就是上面的ByteBuffer。

通過上面的索引,找到輸入緩沖區。

註意,上面這個是input

返回輸出緩沖區隊列索引,最多阻塞“timeoutUs”微秒。返回已成功解碼的輸出緩沖區和INFO_*常量之壹的索引。info 就是描述輸出緩沖區數據的,例如時間,大小

通過上面的索引,找到輸出緩沖區。

註意,上面這個是output

釋放輸出緩沖區 ,這個也好理解,妳從輸出緩沖區取完數據了,得要把緩沖區清空,放回去,取下壹次的數據

  • 上一篇:jquery裏面,或者HTML,HTML5,C#裏面如何實現下圖的圖片效果。滑動輪播類似的。 DW裏面添加代碼也行。
  • 下一篇:小紅書分析報告
  • copyright 2024編程學習大全網