Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7794029
  • 博文数量: 701
  • 博客积分: 2150
  • 博客等级: 上尉
  • 技术积分: 13233
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-29 16:28
个人简介

天行健,君子以自强不息!

文章分类

全部博文(701)

文章存档

2019年(2)

2018年(12)

2017年(76)

2016年(120)

2015年(178)

2014年(129)

2013年(123)

2012年(61)

分类: 架构设计与优化

2014-04-19 21:55:10

一、FFmpeg源代码下载与编译
# wget
# 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

四、运行
# ./output_example xxx.flv
阅读(3127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~