Android音視頻開發(fā)之MediaExtractor

簡介

Android提供了一個MediaExtractor類,可以用來分離容器中的視頻track和音頻track。

  • 使用步驟
  1. 通過setDataSource()設置數(shù)據(jù)源,數(shù)據(jù)源可以是本地文件地址,也可以是網(wǎng)絡地址:

    MediaExtractor mVideoExtractor = new MediaExtractor();
    mVideoExtractor.setDataSource(mVideoPath);
    
  2. 可以通過getTrackFormat(int index)來獲取各個track的MediaFormat,通過MediaFormat來獲取track的詳細信息,如:MimeType、分辨率、采樣頻率、幀率等等:

    for (int i = 0; i < mVideoExtractor.getTrackCount(); i++) {
    MediaFormat format = mVideoExtractor.getTrackFormat(i); 
    }
    

    mediaFormat
    封裝描述媒體數(shù)據(jù)格式的信息,無論是音頻還是視頻。媒體數(shù)據(jù)的格式被指定為字符串/值對。

  3. 獲取到track的詳細信息后,通過selectTrack(int index)選擇指定的通道:

    if (format.getString(MediaFormat.KEY_MIME).startsWith("video/")) {
        mVideoExtractor.selectTrack(i);
        break; 
    }
    
  4. 指定通道之后就可以從MediaExtractor中讀取數(shù)據(jù)了:

    while (true) {
        int sampleSize = mVideoExtractor.readSampleData(buffer, 0);
        if (sampleSize < 0) {
        break;
        }
        // do something
        mVideoExtractor.advance(); // 移動到下一幀
    }
    
  5. 在讀取結束之后,記得釋放資源:

    mVideoExtractor.release();
    
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容