第二节ffplay精简
工程地址:http://code.google.com/p/kudou-player/
---------------------------------------------------
由于ffplay有很多参数,在android移植起来不太必要,因为我们就只需其播放功能。因此我们需要将一些不必要的逻辑去掉,方便移植。
主要是去掉以下功能:
1,字幕功能(android播放中如果涉及字幕,就想相对麻烦一些,因此去掉)
2,单独音频播放功能(由于我们是做视频播放器,音乐显示可以去掉)
3,命令行的控制功能(由于我们使用android framework作为界面控制,所以命令行控制也不需要了)
4,去掉AVFILTER功能
开始动刀:
cd /home/xdpan/work
mkdirkupalyer
cd kupalyer/
cp../ffmpeg-0.11.1/ffplay.c ./
cp ffplay.ckuplayer.c
具体删除过程略过,可以查看kuplayer.c和ffplay.c的差异
新建Makefile文件
target=kuplayer
incdir=/home/xdpan/local/include
libdir=/home/xdpan/local/lib
ldflags=-lavformat-lavutil -lswscale -lavcodec -lswresample -lSDL
all:$(target)
kuplayer:kuplayer.c
gcc $(ldflags) -I$(incdir) -L$(libdir) $< -o $@
clean:
rm $(target) *.O
编译:
make
测试:
在/home/xdpan/media/放入test.mp4文件
./kuplayer就能够进行播放了
出错处理:
gcc -o ff kuplayer.c -lavformat -lavutil -lswscale -lavcodec-lswresample -lSDL -I/home/xdpan/local/include -L/home/xdpan/local/lib
kuplayer.c:33:34:error: libavutil/colorspace.h: No such file or directory
kuplayer.c:In function ‘queue_picture’:
kuplayer.c:1435:warning: passing argument 2 of ‘sws_scale’ from incompatible pointer type
/usr/local/include/libswscale/swscale.h:237:note: expected ‘const uint8_t * const*’ but argument is of type ‘uint8_t **’
make: ***[ff-mini] Error 1
处理方法:
把/home/xdpan/work/ffmpeg-0.11.1/libavutil/colorspace.h拷贝到头文件目录
sudo cp /home/xdpan/work/ffmpeg-0.11.1/libavutil/colorspace.h/usr/local/include/libavutil
源文件如下(或者在虚拟机对应目录中提取):