ffmpeg2.8.1
x264-snapshot-20170521-2245
x265-3.2
SDL-1.2.15
Ubuntu14.04
1.ffmpeg扩展h265,参看金山云的github。修改了三个文件。
2.x265编译很简单,弹出一个dos窗口的时候,先按c,再按g,“一直下一步”。没什么好说的,网上查。推荐是static编译
3.SDL编译,我的版本是2.8.1所以,不支持SDL2,所以要下载SDL1的包编译。
为了生成ffplay,需要做的工作:
4.sudo apt-get install libasound2-dev libpulse-dev 为了ffplay播放有声音
5.sudo apt-get install libx11-dev
sudo apt-get install xorg-dev 是ffplay播放时,SDL依赖的图形库
6.SDL需要修改下src/video/x11/SDL_x11sym.h ,要注释两行代码
#ifdef LONG64
SDL_X11_MODULE(IO_32BIT)
//SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
//SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
#endif
7. 开始SDL编译,脚本是./configure --disable-alsa
最后的alsa disable非常重要,否则ffplay播放声音卡顿,而且疯狂弹日志
8.ffmpeg编译必须加上--enable-sdl ,否则ffplay是不会生成的。
ffplay会不会生成不必等make完了才知道,可以直接看configure结束后,
会打印enable programes,如果没有ffplay,说明你的环境还有问题
9.ffmpeg编译脚本(x264,fdkaac,lame的编译参看我以前的博客)
#!/bin/bash
PROJECT_PATH=`pwd`
PREFIX=/home/bixinwei/Downloads/ffmpeg-2.8.1-h265patch/build
external_libs=/home/bixinwei/Downloads/ubuntu-build/external_libs
./configure --prefix=$PREFIX \
--enable-shared --disable-static \
--enable-ffplay --enable-sdl --enable-pic --enable-gpl --enable-version3 --enable-nonfree \
--enable-libx264 --enable-libx265 --enable-libmp3lame --enable-libfdk_aac \
--disable-doc --yasmexe=/usr/bin/yasm \
--enable-pthreads --enable-avfilter \
--extra-libs="-lpthread -lm -ldl" \
--extra-cflags="-I/usr/local/include -I$external_libs/fdk-aac/include -I$external_libs/x264/include -I$external_libs/lame/include" \
--extra-ldflags="-L/usr/local/lib -L$external_libs/fdk-aac/lib -L$external_libs/x264/lib -L$external_libs/lame/lib"
10. pkgconfig是干啥的?其实这个东西就是充当了--extra-cflags,extra-ldflags的作用。一般build完,在
$prefix/lib/pkgconfig有个.pc的文件,这个文件就是告诉系统改依赖库所在路径。我们手动用--extra-cflags,extra-ldflags
指定库的路径,就不需要pkgconfig了
11.生成的ffplay也支持播放hevc的rtmp流