MP4V2庫與MP4AV庫編譯
MP4V2和MP4AV都是開源項目MPEG4IP的一部分,當前MPEG4IP已經不再維護。
但是MP4V2最為其中的一部分,還有開源組織再進行更新,其項目主頁:http://code.google.com/p/mp4v2/,當前最新版本為mp4v2-2.0.0。
關於MP4文件的生成可以參考,MPEG4IP中MP4Creat的實現代碼。
在這裏將編譯庫過程中遇到的問題記錄一下:
MP4V2 Windows環境編譯
MP4v2項目工程有windows下的工程,但是缺少幾個文件,分別為platform_win32.cpp,platform_win32_impl.h,Version.rc
這幾個文件可以到http://code.google.com/p/mp4v2/的最新SVN庫中下載到,將這幾個文件更新到相應工程後,即可編譯成功。
MP4V2 Linux環境編譯
MP4v2在Linux上編譯沒有遇到什麽問題,直接按照工程中install文檔中步驟操作即可。
MP4AV Windows環境編譯
由於MP4AV庫時MPEG4IP的一部分,當前我只是在編了MPEG4IP的MP4AV的一部分,MPEG4IP在windows下的編譯從網上查的資料來看,存在一些問題,但是有的網友已經給出了解決的方法,本人是按照資源:http://download.csdn.net/detail/zhangcuizhi/1737512中的文檔進行操作的,MPEG4IP不能完整編譯成功,但是MP4AV庫可以成功編譯。
MP4AV Linux環境編譯
參考MPEG4IP庫中README.html,中的編譯步驟執行即可。
1 執行./bootstrap ,將生成一系列的makefile
2 由於我只需要獲取MP4AV庫,只需要進入MP4AV工程,執行make即可
編譯過程有有以下錯誤:
In file included from config_opts.cpp:1:
../../include/mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)‘
/usr/include/string.h:367: error: ambiguates old declaration ‘const char* strcasestr(const char*, const char*)‘
解決方法:
修改mpeg4ip.h從126行起,按照如下修改
修改前:
#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
修改後:
#ifdef __cplusplus
extern "C++" {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
重新編譯,通過。
MP4V2庫與MP4AV庫編譯