在Ubuntu Linux下安裝了ffmpeg加載了sdl,編譯運行了ffplay.c.tutorial01-08.c.過程記錄如下:
1.安裝ffmpeg,就是一裸體,呵呵,我什麼都沒加載。對於剛入門的話,沒必要裝那麼多選項,等用到了什麼在加上去吧,我將在以後會吧那些選項加上,目前我只想閱讀源碼。
2.安裝SDL:
因為ubuntu裡面有SDL,所以直接在命令窗口輸入以下就可以了:
sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-sound1.2-dev
檢測SDL裝上了沒有:sdl-config --exec-prefix --version --cflags
2)ffmpeg不講了,網上一大堆,步驟也繁瑣,我就裝了一個裸體
下載源碼
./configure --enable-shared --enable-pthreads
make
make install
3.對文件的編譯命令,很雜:
典型的例子:
gcc -o player ffplay.c cmdutils.c -I/home/han/soft/ffmpeg_src -lavformat -lavcodec -lavcore -lavdevice -lavfilter -lswscale -lavutil -I/usr/include/SDL -lSDL -lSDLmain
-lm -lz
或者
gcc -o tutorial07 tutorial07.c -lavformat -lavcodec -lavcore -lavdevice -lavfilter -lswscale -lavutil -lz -lm `sdl-config --cflags --libs`
-lz的下載:
這類錯誤:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
這是由於缺少libz庫
我是這樣解決的:在名狂直接輸入:apt-get install zlib1g-dev
/usr/bin/ld: cannot find -l* 錯誤的解決方法……
碰到這個問題大概可以用這個方法去解決(我碰到幾個都是這樣搞定的):
yum -y install libtool-l*
譬如:
/usr/bin/ld: cannot find -lltdl
解決方法:
yum -y install libtool-ltdl*
-lm:一些數學公式等系統內部庫,不用管。
ffmpeg那幾個tutorial編譯的時候,出現rint那個函數錯誤:只需要注釋掉就可以了:
/*
int rint(int x)
{
return (int)(x + (x < 0 ? -0.5 : 0.5));
}
*/
附加:測試電影最好是.mpg文件。