mp4v2研究筆記1 獲得Track(新)

2021-06-20 09:28:19 字數 1540 閱讀 2227

***免責申明:本部落格是博主研究mp4v2時的筆記,第一初衷是備忘,是寫給自己看的,想到多少寫多少,文中觀點很可能不正確,也可能缺乏邏輯性,可讀性,不喜勿噴。***

正文:庫編譯後,還有幾個演示工程,他們可以向您演示如何使用mp4v2庫(其實我覺得還差很遠)

我們從mp4track工程開始研究起。且看它的**,很簡潔,但是太簡潔了也不好使,我們要把它剝皮,把trackutility這外包裝類去掉,才好真正的在在自己的**中使用mp4v2庫。

extern "c"

int main( int argc, char** argv )

如何去掉這層皮也不是很複雜的事,我花了半小時把皮剝好了,如果你建立乙個工程直接使用如下**,即可執行,效果與上面一樣,但是少了一些包裝類工具類,讓我們更容易深入本質研究分析**:

#include "stdafx.h"

#include "util/impl.h"

#pragma comment( lib, "..\\debug\\libmp4v2.lib" )

using namespace std;

void verbose1f( const char* format, ... )

bool actionlistsinglex( mp4filehandle filehandle, uint16_t index )

extern "c"

int main( int argc, char** argv )

mp4close(filehandle);

return result;

}

我們來看上面的**,main函式中,首先是開啟乙個mp4檔案。使用mp4read函式開啟檔案,除了openfile之外還做了讀取所有atom資訊的操作:

void mp4file::read( const char* name, const mp4fileprovider* provider )

開啟檔案之後,

用mp4getnumberoftracks獲得軌道數,再迴圈列印每個軌道的資訊。其實track資訊早已在mp4read函式中讀取了,mp4getnumberoftracks只是簡單的返回mp4file類中的私有陣列m_ptracks的size。

我們來看看main函式中的actionlistsinglex,其中最關鍵的一句:mp4v2::util::trackmodifier tm( filehandle, index );這個trackmodifier類在建構函式中呼叫了reftrackatom方法,對了,就是這個方法在所有的atom中找到track,因為track也是atom的一種:

mp4atom& trackmodifier::reftrackatom( mp4file& file, uint16_t index )

return *trak;

}

MP4v2 基本使用(二)

mp4轉h264檔案 本文最目標是基本的mp4v2介面的使用,並且實現乙個簡單的提取mp4檔案裡面264流的功能 1.264檔案基本知識 下看看h264檔案的基本常識 nal 頭 0x00 0x00 0x00 0x01 sps nal 0x67開頭 pps nal 0x68開頭 i幀 0x65 開頭...

MP4V2 使用 編譯 錄製

mp4v2 編譯 使用 mp4格式的錄製可以用 ffmpeg 也可以用mp4v2,這個個專門錄製 mp4mp4 這個功能,或者不想用 ffmpeg 那麼大的庫的話,就用 mp4v2吧。一 mp4v2 的編譯 參考 configure prefix home linux mp4v2 2.0.0 ins...

ios上關於編譯MP4v2靜態庫的問題

留個記號把mp4v2的問題記錄下來,防止下次忘了 在google搜尋到乙個能生成mp4v2的ios靜態庫的檔案,位址是解壓縮裡面的mp4v2 2.0.0.tar.bz2之後,修改build libmp4v2 for ios.sh檔案裡面的 ios base sdk 根據xcode的版本更改ios b...