鴻蒙OS 視頻提取開(kāi)發(fā)指導(dǎo)

2020-09-18 14:13 更新

場(chǎng)景介紹

視頻提取主要工作是將多媒體文件中的音視頻數(shù)據(jù)進(jìn)行分離,提取出音頻、視頻數(shù)據(jù)源。

接口說(shuō)明

接口名 功能描述
Extractor() 創(chuàng)建 Extractor 實(shí)例。
setSource(Source source) 設(shè)置媒體播放源。
getStreamFormat(int id) 獲取對(duì)應(yīng)索引的軌道數(shù)據(jù)的格式。
getTotalStreams() 獲取媒體文件中總軌道數(shù)。
selectStream(int id) 根據(jù)軌道號(hào)選擇媒體文件中對(duì)應(yīng)的軌道。
unselectStream(int id) 取消軌道選擇。
rewindTo(long microseconds, int mode) 根據(jù)時(shí)間和 mode 跳轉(zhuǎn)到指定幀。
next() 跳轉(zhuǎn)到下一幀。
readBuffer(ByteBuffer buf, int offset) 讀取解復(fù)用后的數(shù)據(jù)。
getStreamId() 獲取當(dāng)前軌道號(hào)。
getFrameTimestamp() 獲取當(dāng)前媒體數(shù)據(jù)幀的時(shí)間戳。
getFrameSize() 獲取當(dāng)前媒體數(shù)據(jù)幀的數(shù)據(jù)大小。
getFrameType() 獲取當(dāng)前媒體數(shù)據(jù)幀的flags。
release() 釋放資源。

開(kāi)發(fā)步驟

  1. 調(diào)用 Extractor() 方法創(chuàng)建 Extractor 實(shí)例。

  1. 構(gòu)造數(shù)據(jù)源對(duì)象,并調(diào)用 Extractor 實(shí)例的 setSource(Source source) 方法,設(shè)置媒體源,代碼示例如下:

   Extractor extractor = new Extractor();
   FileDescriptor fd = in.getFD();
   Source source = new Source(fd);
   extractor.setSource(source);

  1. 調(diào)用 getTotalStreams() 方法獲取媒體的軌道數(shù)量。

  1. 調(diào)用 selectStream(int id) 方法選擇特定軌道的數(shù)據(jù),進(jìn)行提取。

  1. (可選)調(diào)用 unselectStream(int id) 方法取消選擇軌道。

  1. (可選)調(diào)用 rewindTo(long microseconds, int mode) 方法實(shí)現(xiàn)提取過(guò)程中的跳轉(zhuǎn)指定位置。

  1. 調(diào)用 readBuffer(ByteBuffer buf, int offset) 方法,可以實(shí)現(xiàn)獲取提取出來(lái)的 Buffer 數(shù)據(jù)功能。

  1. 調(diào)用 next() 方法,實(shí)現(xiàn)提取下一幀的功能。

  1. (可選)調(diào)用 getMediaStreamId() 方法,可以實(shí)現(xiàn)獲取當(dāng)前選擇的軌道編號(hào)的功能。

  1. (可選)調(diào)用 getFrameTimestamp() 方法,可以實(shí)現(xiàn)獲取當(dāng)前軌道內(nèi)媒體數(shù)據(jù)幀時(shí)間戳的功能。

  1. (可選)調(diào)用 getFrameSize() 方法,可以實(shí)現(xiàn)獲取當(dāng)前軌道的媒體數(shù)據(jù)幀大小的功能。

  1. (可選)調(diào)用 getFrameType() 方法,可以實(shí)現(xiàn)獲取當(dāng)前軌道的媒體數(shù)據(jù)幀 flags 的功能。

  1. 提取結(jié)束后,調(diào)用 release() 釋放資源。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)