FFmpeg3.4+SDL2实现简单视频播放器

先在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中有;

猜你喜欢

转载自blog.csdn.net/cyf15238622067/article/details/79413697