FFMPEG 學習(一) ffmpe+SDL2.0環境安裝(爬坑記錄)

系統:Ubuntu 14.04.4

安裝包傳送門ffmpeg+SDL+yasm安裝包傳送門

一、安裝ffmpeg(4.2.2)(好像是從3.2開始,只能適配2.X以上版本的SDL)

如果需要安裝的ffplay的話,由於ffplay依賴SDL,所以需要先安裝SDL庫。

1、解壓

tar -zxvf ffmpeg-4.2.2.tar.gz
cd ffmpeg-4.2.2 

2、注意參數--enable-ffplay

     需要支持ffplay的一定要帶上這個參數,否則編譯的時候會報ffplay.c下的很多函數未定義。看前輩們解決方案中有執行完configure之後修改ffmpeg-4.2.2 /ffbuild下的config.mak和common.mak。我嘗試了並沒有成功,可能有些配置不夠完整,導致SDL的庫鏈接不到。直接在配置的時候加上--enable-ffplay。執行完configure,config.mak中會自動生成SDL庫的鏈接路徑,編譯可順利進行

./configure --enable-shared --enable-ffplay --prefix=/ljm/ffmpeg
make    編譯時間會比較長
make install

3、缺少yasm編譯問題

yasm未安裝或版本較低。安裝yasm

tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0/
./configure
make
make install

安裝成功

ljm@ubuntu:~$ yasm --version
yasm 1.3.0
Compiled on May  9 2020.
Copyright (c) 2001-2014 Peter Johnson and other Yasm developers.
Run yasm --license for licensing overview and summary.

4、ffmpeg安裝成功

4.1、編譯目錄下有如下文件

ljm@ubuntu:/etc/ffmpeg/ffmpeg-4.2.2$ ls -alh ffmpeg ffplay
-rwxr-xr-x 1 root root 246K May 12 10:10 ffmpeg
-rwxr-xr-x 1 root root 121K May 12 10:10 ffplay

進入 這個目錄下執行 ./ffmpeg -version

報錯

libavdevice.so.57: cannot open shared object file: No such file or directory

 這是因爲SDLffmpeg的相關的庫沒有被連接到,需要修改鏈接

vim /etc/ld.so.conf.d/ffmpeg.conf 

寫入剛剛的安裝路徑
/ljm/ffmpeg/lib
保存退出

執行ldconfig命令使腳本生效

 正確之後

ljm@ubuntu:/etc/ffmpeg/ffmpeg-4.2.2$ ./ffmpeg -version
ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.4)
configuration: --enable-shared --enable-ffplay --prefix=/ljm/ffmpeg
libavutil      56. 31.100 / 56. 31.100
libavcodec     58. 54.100 / 58. 54.100
libavformat    58. 29.100 / 58. 29.100
libavdevice    58.  8.100 / 58.  8.100
libavfilter     7. 57.100 /  7. 57.100
libswscale      5.  5.100 /  5.  5.100
libswresample   3.  5.100 /  3.  5.100

需要命令行直接使用ffplay命令,需要修改環境變量

vim /etc/profile

export PATH=/etc/ffmpeg/ffmpeg-4.2.2:$PATH

1、我的編譯目錄(非安裝目錄)是在/ect/ffmpeg
2、後面的$PATH記得加上,不然會導致進入Ubuntu的時候,循環在登錄界面,不斷的輸入密碼

 

 

二、SDL2.0 的安裝

下載好包SDL2-2.0.12.tar.gz

1、解壓

tar -zxvf SDL2-2.0.12.tar.gz

2、進入解壓目錄下的SDL2-2.0.12

./configure
make
make install

3、安裝完成

ljm@ubuntu:~$ sdl2-config --version
2.0.12

 三、庫文件、頭文件處理

①SDL庫

頭文件在:/usr/local/include/SDL2

庫文件在:/usr/local/lib

 

②ffmpeg庫

頭文件:/usr/local/include/ffmpeg

庫文件:/usr//lib

以上兩個路徑並不是必須的,可以自由發揮,在編譯的時候記得配置好路徑

下面是我一個demo的Makefile供參考

CC		= gcc 
CFLAGS	= -g -O2 -D_REENTRANT -I/usr/local/include/SDL2 -I/usr/local/include/ffmpeg  -DHAVE_OPENGL -g
LIBS	= -Wl,-rpath,/usr/local/lib -Wl,--enable-new-dtags -L/usr/local/lib -lSDL2 -lavformat -lavcodec -lavutil -lswscale
srcdir	= .

play : $(srcdir)/play.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

play2 : $(srcdir)/play2.c
	$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

-I:指定頭文件路徑

-L:指定庫文件路徑

-l(小寫的L):指定庫名(lib開頭,.so結尾,-l後的就是庫名,例如libavformat.so。寫作:-lavformat)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章