移植ffmpeg到VC環境心得
所有想學習ffmpeg的網友有福了,大名鼎鼎的ffmpeg,移植到Windows的VC6版本全部開源,編譯環境為VC6+SP5+VCPP5。別忘記了頂貼哦。
移植ffmpeg到windows,主要的修改是ffmpeg中VC6不支援C99語法,簡單移植步驟如下:
1:首先裝好Linux、VMware和SDL,配置好smb,在Linux下編譯通過,驗證能正確的Run。
2:把Linux下相應目錄的所有檔案通過smb拖到Windows,以後的修改移植都在Windows下進行。
3:對照所有同名的.c檔案和.o檔案,如果有.c檔案沒有對應的同名.o檔案,說明此.c檔案沒有編譯,是多餘的,可直接刪除。不過我的習慣是在此檔案後加.old字尾來標示,這類檔案有幾十個。注意有幾個.c檔案是被include在其他.c檔案中,因此沒有.o檔案,不可刪除,我的習慣是把這類檔案加.inc字尾,並且修改相應include的檔名。這類檔案共計有 jpeg_ls.c.inc,mdec.c.inc,motion_est_template.c.inc,svq3.c.inc和wmv2.c.inc。
4:修改config.h檔案,關閉掉MMX/SSE2等彙編加速開關。定義CONFIG_WIN32標示目標系統為WIN32。
5:刪掉目錄下所有Linux編譯生成的中間檔案,包括.o檔案,.d檔案,還有Linux下的可執行檔案。 如果怕刪錯了,就做好備份。
6:現在用VC6建一個工程檔案,把所有檔案的.c和.h檔案加入到工程中,不包括ffmpeg.c/ffserver.c檔案,不包括改了字尾名的.old檔案和.inc檔案。
注意在libavcodec和libavformat目錄下有些同名的.c檔案,為區別同名.c檔案,我的習慣是libavcodec目錄下的檔名加_codec,libavformat目錄下的檔名加_format。
7:為避免思維過多的切換,一次只處理一個方面的內容。首先搜查所有的AVCodec,對照.h檔案中的定義改C99語法,通常是填一些NULL或0之類的值,接著搜查並處理所有的AVInputFormat,最後搜查並處理所有的AVOutputFormat。
8:搜查並處理所有AVRational語法。
9:至此,基本上主要的修改已經完成,剩下的主要有 動態陣列和一些陣列初始化,函式實參初始化等。
10:一維的動態陣列比較好改,多維的動態陣列比較困難,但是多維的動態陣列多半用於編碼,如果只要解碼可以簡單的註釋掉。
11:陣列初始化和函式實參初始化只需要多加一個臨時變數,很簡單的修改。
12:有些.h檔案在VC6中找不到,有些可以從Linux中拷貝,也可以自己簡單定義。最後編譯修改.c檔案的時候,一個一個的編譯,一個一個的修改,沒必要全部編譯。
最後祝大家好運,移植順利。開源的ffmpeg 是 51.8.0的版本,我大約修改了5天左右。
http://files.cnblogs.com/mcodec/ffmpeg.51.8_vc6.rar
相關文章
- mplayer 移植到 arm 心得
- 使用 SSH 移植 Conda 環境
- 可移植的python環境Python
- Qt+ffmpeg環境搭建QT
- FFmpeg系列(一)-Mac環境下使用NDK編譯FFmpegMac編譯
- 四、Clion搭建FFmpeg開發環境開發環境
- ffmpeg在移植到海思HI35xx平臺之將ffmpeg庫引入到sample的demo中
- FFmpeg開發筆記(三十五)Windows環境給FFmpeg整合libsrt筆記Windows
- FFmpeg開發筆記(十七)Windows環境給FFmpeg整合字幕庫libass筆記Windows
- FFmpeg開發筆記(十三)Windows環境給FFmpeg整合libopus和libvpx筆記Windows
- FFmpeg開發筆記(二十五)Linux環境給FFmpeg整合libwebp筆記LinuxWeb
- FFmpeg開發筆記(二十八)Linux環境給FFmpeg整合libxvid筆記Linux
- FFmpeg開發筆記(二十九)Windows環境給FFmpeg整合libxvid筆記Windows
- FFmpeg開發筆記(十二)Linux環境給FFmpeg整合libopus和libvpx筆記Linux
- FFmpeg開發筆記(十一)Windows環境給FFmpeg整合vorbis和amr筆記WindowsORB
- FFmpeg開發筆記(十)Linux環境給FFmpeg整合vorbis和amr筆記LinuxORB
- 簡單建立VC + DDK的驅動開發環境開發環境
- Ubuntu系統-FFmpeg安裝及環境配置Ubuntu
- Linux下搭建FFmpeg開發除錯環境Linux除錯
- 手把手教你搭建ffmpeg命令列環境命令列
- FFmpeg開發筆記(三十四)Linux環境給FFmpeg整合libsrt和librist筆記Linux
- VC++程式設計環境下的除錯步驟C++程式設計除錯
- 交叉編譯-Mac環境使用NDK編譯FFmpeg編譯Mac
- FFmpeg開發筆記(十):ffmpeg在ubuntu上的交叉編譯移植到海思HI35xx平臺筆記Ubuntu編譯
- FFmpeg開發筆記(二十)Linux環境給FFmpeg整合AVS3解碼器筆記LinuxS3
- ffmpeg flv轉MP4 一點心得
- FFmpeg開發筆記(二十一)Windows環境給FFmpeg整合AVS3解碼器筆記WindowsS3
- PHP-fpm Linux 環境使用 exec 函式呼叫 FFmpeg,報錯 FFmpeg: command not found 的解決方法PHPLinux函式
- FFmpeg開發筆記(二十四)Linux環境給FFmpeg整合AV1的編解碼器筆記Linux
- 從環境搭建到打包使用TypeScriptTypeScript
- centos7環境下二進位制編譯安裝ffmpegCentOS編譯
- FFmpeg開發筆記(一)搭建Linux系統的開發環境筆記Linux開發環境
- 配置《Orange's一個作業系統的實現》環境心得作業系統
- 萬維考試系統檢測不到VC++ 6.0環境解決辦法C++
- mirrord:輕鬆地將流量從生產環境映象到開發環境開發環境
- 10_QT系統移植之在開發板上部署QT執行環境QT
- 含有replication環境的sqlserver切換到standbySQLServer
- 筆記: 環境 - Postgre從安裝到使用筆記