1. 程式人生 > >MP4V2庫與MP4AV庫編譯

MP4V2庫與MP4AV庫編譯

關於 load name linux case 沒有 div oot mp4

最近在開發一個將RTP流存儲為MP4文件的功能。其中針對MP4文件讀寫,用到了兩個開源的庫。其中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庫編譯