1. 程式人生 > >ubuntu ffmpeg+sdl編譯安裝過程記錄

ubuntu ffmpeg+sdl編譯安裝過程記錄

在ubuntu上的整個編譯過程其實就是標準的./configure &&make &&sudo make install
幾個問題記錄下:

1.如果系統沒有裝SDL1.x版本的話,預設是不會編譯出ffpaly命令的。因為ffmpeg的音視訊顯示依賴SDL庫,且必須是1.x版本的SDL。

2.

執行ffplay時,有些機器上會出現

Could not initialize SDL - No available video device
(Did you set the DISPLAY variable?)

說明系統中沒有安裝x11的庫檔案,因此編譯出來的SDL庫實際上不能用。

下載安裝
sudo apt-get install libx11-dev

sudo apt-get install xorg-dev

重新編譯sdl

再次進入sdl原始碼目錄重新編譯,make clean,./configure,make,make install

3.安裝SDL的時候出現

/src/video/x11/SDL_x11sym.h:168:17: error: conflicting types for _XData32?
 SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
                 ^
./src/video/x11/SDL_x11dyn.c:95:5: note: in definition of macro 釹DL_X11_SYM?
  rc fn params { ret p##fn args ; }

查閱了一些資料,發現是libx11-dev版本問題(檢視版本如圖),版本>1.5.99,所以需要修改src/video/x11/SDL_x11sym.h 檔案,按照提示修改168行,

修改如下:

原來是:SDL_X11_SYM(int,_XData32,(Display *dpy,register  long *data,unsigned len),(dpy,data,len),return)

改後新增一個單詞即可:(_Xconst)

SDL_X11_SYM(int,_XData32,(Display *dpy,register_Xconst long *data,unsigned len),(dpy,data,len),return)

再make 和 sudo make install就可以了。