ffmpeg库编译加文字_使用ffmpeg库编译错误及解决办法

一、FFmpeg源代码下载与编译

# wget http://www.ffmpeg.org/releases/ffmpeg-0.5.13.tar.bz2

# tar -jxvf ffmpeg-0.5.13.tar.bz2

# vim ffmpeg_configure.sh

./configure \

--prefix=/YOUR_INSTLL_DIRECTORY \

--enable-gpl --enable-nonfree --enable-version3 \

--enable-swscale --enable-avfilter  \

--enable-pthreads

【保存并退出】

# chmod +x ffmpeg_configure.sh

# ./ffmpeg_configure.sh

# make

# make install

二、生成SDK

将安装目录“”下的

YOUR_INSTLL_DIRECTORY/include

YOUR_INSTLL_DIRECTORY/lib

打包,就可以生成一个开发用的SDK

# tar -czvf YOUR_INSTLL_DIRECTORY/ ffmpeg_sdk.tar.gz

三、使用output_example测试SDK

1. 复制文件

将ffmpeg-0.5.13下的output_example.c复制到SDK目录;

2. 编译生成:

# gcc output_example.c -o output_example

-I/opt/.../include

-L/opt/.../lib

-lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswscale

1) 错误提示:

/opt/.../ffmpeg-0.5.13/libswscale/swscale.c:1234: undefined reference to `pow'

/opt/.../ffmpeg-0.5.13/libswscale/swscale.c:1238: undefined reference to `sin'

/opt/.../ffmpeg-0.5.13.install/lib/libswscale.a(swscale.o): In function `sws_getGaussianVec':

...

解决:

编译时加链接linux的数学函数库 "-lm"

# gcc output_example.c -o output_example

-I/opt/.../include

-L/opt/.../lib

-lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswscale

-lm

2) 错误提示:

/opt/.../lib/libavcodec.a(pthread.o): In function `avcodec_thread_free':

/opt/.../libavcodec/pthread.c:95: undefined reference to `pthread_join'

解决:

编译时加链接linux的多线程库 "-lpthread"

# gcc output_example.c -o output_example

-I/opt/.../include

-L/opt/.../lib

-lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswscale

-lm -lpthread

3). 错误提示:

/opt/.../lib/libavcodec.a(pngdec.o): In function `decode_frame':

/opt/.../lib/libavcodec/pngdec.c:406: undefined reference to `inflateInit_'

/opt/.../lib/libavcodec.a(pngdec.o): In function `png_decode_idat':

/opt/.../lib/libavcodec/pngdec.c:365: undefined reference to `inflate'

/opt/.../lib/libavcodec.a(pngdec.o): In function `decode_frame':

/opt/.../lib/libavcodec/pngdec.c:591: undefined reference to `inflateEnd'

解决:

编译时加链接linux的通用例程库 "-lz"

# gcc output_example.c -o output_example

-I/opt/.../include

-L/opt/.../lib

-lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswscale

-lm -lpthread -lz

4). 错误提示

/opt/.../lib/libavformat.a(allformats.o): In function `av_register_all':

/opt/.../libavformat/allformats.c:48: undefined reference to `avcodec_register_all'

/opt/.../lib/libavformat.a(utils.o): In function `av_find_stream_info':

...

原因: 包依赖关系

解决:

# gcc output_example.c -o output_example

-I/opt/ffmpeg/sourcecode/ffmpeg-0.5.13.install/include

-L/opt/ffmpeg/sourcecode/ffmpeg-0.5.13.install/lib

-lavformat -lavdevice -lavcodec  -lavutil -lavfilter

-pthread -ldl -lswscale -lbz2 -lasound  -lz -lm

6、错误提示

gcc -DNIGHT demo.c -lalgnight -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswresample -lswscale -lz -lm -o app

./libffmpeg/lib/libavformat.a(matroskadec.o): In function `matroska_decode_buffer':

/root/ffmpeg-0.11/libavformat/matroskadec.c:1100: undefined reference to `BZ2_bzDecompressInit'

解决办法:

参数后加上-lbz2

-lz 是对于zip的支持

-lm是对于数学函数的支持

四、运行

# ./output_example xxx.flv

本文转载自:http://blog.chinaunix.net/uid-26000296-id-4217121.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值