先在Ubuntu下安装,测试;
FFmpeg播放,需要先安装libx264库,libx264用于解码;
下载路径http://www.videolan.org/developers/x264.html
解压->配置
./configure --disable-asm --enbale-shared --enable-static
make
sudo make install
安装成功后有如下信息:
install -d /usr/local/bin
install x264 /usr/local/bin
install -d /usr/local/include
install -d /usr/local/lib
install -d /usr/local/lib/pkgconfig
install -m 644 ./x264.h /usr/local/include
install -m 644 x264_config.h /usr/local/include
install -m 644 x264.pc /usr/local/lib/pkgconfig
ln -f -s libx264.so.155 /usr/local/lib/libx264.so
install -m 755 libx264.so.155 /usr/local/lib
install -m 644 libx264.a /usr/local/lib
gcc-ranlib /usr/local/lib/libx264.a
如果想生成ffplay 需要先安装SDL2
这一步就直接sudo apt-get 了 也可以源码编译安装
sudo apt-get install libsdl2-dev
路径:-I/usr/local/include -I/usr/include/SDL2 -L/usr/lib/x86_64-linux-gnu/
安装成功
ffmpeg-3.4.2,下载源码http://ffmpeg.org/download.html#releases
解压->配置
CFLAGS="-O3 -fPIC" ./configure --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --enable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-yasm --disable-stripping --enable-libx264 --extra-cflags="-I/usr/local/include -I/usr/include/SDL2" --extra-ldflags="-L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/" --extra-libs=-lSDL2
make
sudo make install
安装成功。
ffmpeg 运行出错
ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory
sudo vi /etc/ld.so.conf
修改如下
include ld.so.conf.d/*.conf
/usr/local/lib ///usr/local/ 目录是我ffmpeg安装目录,根据你的安装目录改吧
adminn@ubuntu:/usr/local/lib$ sudo ldconfig
adminn@ubuntu$ ffmpeg -version //命令查看版本
ffplay abc.mp4
正常。
ARM-Linux交叉编译,生成ffplay
libx264交叉编译
CC=arm-linux-gnueabi-gcc ./configure --host=arm-linux-gnueabi --disable-avs --disable-swscale --disable-lavf --disable-ffms --disable-lsmash --prefix=/home/cui/allwinner/a83t/ffmpeg/libout/libx264 --cross-prefix=arm-linux-gnueabi- --enable-static --enable-shared
make
make install
编译成功
交叉编译SDL,然后再生成ffplay
编译SDL2.0
./configure --prefix=/home/cui/allwinner/a83t/ffmpeg/libout/sdl2 --host=arm-linux-gnueabi --enable-shared --disable-video-aalib --disable-video-dummy --disable-video-x11 --enable-video-fbcon --disable-video-directfb --disable-video-nanox --disable-video-qtopia --disable-video-ggi --disable-video-svga --disable-video-dga --disable-arts --disable-esd --disable-nasm --disable-joystick --disable-input-tslib --enable-alsa --disable-pulseaudio
make
make install
编译FFmpeg
CFLAGS="-O3 -fPIC" ./configure --cross-prefix=arm-linux-gnueabi- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabi-gcc --arch=arm --prefix=/home/cui/allwinner/a83t/ffmpeg/libout/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-yasm --disable-stripping --enable-libx264 --extra-cflags="-I/home/cui/allwinner/a83t/ffmpeg/libout/libx264/include -I/home/cui/allwinner/a83t/ffmpeg/libout/sdl2/include/SDL2" --extra-ldflags="-L/home/cui/allwinner/a83t/ffmpeg/libout/libx264/lib -L/home/cui/allwinner/a83t/ffmpeg/libout/sdl2/lib" --extra-libs=-lSDL2
此时生成的ffbuild/config.mak文件没有配置SDL FFPLAY等选项;
使用meld 比较Ubuntu下生成的config.mak并修改SDL2,FFPLAY等配置,
make
make install
生成ffplay
通过查看源码,发现FFmpeg在3.0.11以上版本,需要使用SDL2.0才可以编译出ffplay,SDL1.2的话,会报没有SDL_Texture等定义;
FFmpeg3.0.11(包括此版本)在ffplay.c文件中没有出现SDL_Texture,可用SDL1.2编译,但我编译出现错误;
ps:SDL1.2版本中没有发现SDL_Texture,在SDL2.0中有;