linux编译ffmjpg和x264总结
来源:互联网 发布:mac book 复制 编辑:程序博客网 时间:2024/05/16 23:01
文章来源(其他参考ffmeg和x264):
http://alphamailpost.blog.163.com/blog/static/2011180812012726103549793/
http://blog.csdn.net/dgyanyong/article/details/12052857
http://blog.sina.com.cn/s/blog_784448d60101016h.html
http://zhangzhenyuan163.blog.163.com/blog/static/8581938920121015954331/
http://my.oschina.net/u/589721/blog/80192 (windows ffmpeg)
1、下载ffmpeg。
下载网址:http://www.ffmpeg.org/download.html
2、解压缩
tar -zxvf ffmpeg-2.0.1.tar.gz
3、配置,生成Makefile
./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg
如果执行结果不对,可以根据提示信息,并查看帮助,解决问题
./configure --help
4、编译安装
make
make install
5、安装之后在/usr/local/ffmpeg会看到有三个目录
bin 执行文件目录
lib 静态,动态链接库目录
include 编程用到的头文件
为了防止执行程序找不到库文件,
可以将/usr/local/ffmpeg/lib目录设置到LD_LIBRARY_PATH环境变量,
或者查看/usr/local/ffmpeg/lib下所有的链接,并在/usr/lib下建立同样的链接。如下。
ln -s /usr/local/ffmpeg/lib/libavcodec.so /usr/lib/libavcodec.so
ln -s /usr/local/ffmpeg/lib/libavdevice.so /usr/lib/libavdevice.so
ln -s /usr/local/ffmpeg/lib/libavfilter.so /usr/lib/libavfilter.so
ln -s /usr/local/ffmpeg/lib/libavformat.so /usr/lib/libavformat.so
ln -s /usr/local/ffmpeg/lib/libavutil.so /usr/lib/libavutil.so
ln -s /usr/local/ffmpeg/lib/libswresample.so /usr/lib/libswresample.so
ln -s /usr/local/ffmpeg/lib/libswscale.so /usr/lib/libswscale.so
ln -s /usr/local/ffmpeg/lib/libavcodec.so /usr/lib/libavcodec.so.55
ln -s /usr/local/ffmpeg/lib/libavdevice.so /usr/lib/libavdevice.so.55
ln -s /usr/local/ffmpeg/lib/libavfilter.so /usr/lib/libavfilter.so.3
ln -s /usr/local/ffmpeg/lib/libavformat.so /usr/lib/libavformat.so.55
ln -s /usr/local/ffmpeg/lib/libavutil.so /usr/lib/libavutil.so.52
ln -s /usr/local/ffmpeg/lib/libswresample.so /usr/lib/libswresample.so.0
ln -s /usr/local/ffmpeg/lib/libswscale.so /usr/lib/libswscale.so.2
6、编译测试程序
gcc -o ffmpegtest ffmpegtest.c -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavcodec -lavtuil
7、执行程序
./ffmpegtest
或直接执行/usr/local/ffmpeg/lib目录下的./ffmpeg进行测试。
先把一个大致的程序处理框图发出来
这里面主要涉及到几个点,一个是UVC摄像头的数据采集,另一个是X264在ARM平台下的编译,使其产生libx264.a静态链接库
UVC摄像头的视频采集就不说太多了,想了解的可以去 http://download.csdn.net/detail/zhangzhenyuancs/4771678 下载。
这里出来的数据格式为YUV4:2:2
主要说说X264在ARM平台下的编译
因为在进行H264压缩时主要用到了X264编译出来的libx264.a静态链接库。
我用的X264版本为x264-snapshot-20120316-2245-stable。可以去http://download.csdn.net/detail/zhangzhenyuancs/4771526下载
1.编译
解压x264-snapshot-20120316-2245-stable.tar.bz2
#tar -xvzf x264-snapshot-20120316-2245-stable.tar.bz2
#cd x264-snapshot-20120316-2245-stable
# ./configure --host=arm-linux --prefix=/opt/wecam/ffmpeg --enable-shared --disable-asm
配置选项中已经添加了host的选项,所以makefile就不用再修改了,但是要修改config.mak
- SRCPATH=.
- prefix=/opt/webcam/ffmpeg
- exec_prefix=${prefix}
- bindir=${exec_prefix}/bin
- libdir=${exec_prefix}/lib
- includedir=${prefix}/include
- ARCH=ARM
- SYS=LINUX
- CC=arm-linux-gcc
- CFLAGS=-Wshadow -O3 -fno-fast-math -Wall -I. -I$(SRCPATH) -std=gnu99 -fPIC -fomit-frame-pointer -fno-tree-vectorize
- DEPMM=-MM -g0
- DEPMT=-MT
- LD=arm-linux-gcc -o
- LDFLAGS= -lm -lpthread
- LIBX264=libx264.a
- AR=arm-linux-ar rc
- RANLIB=arm-linux-ranlib
- STRIP=arm-linux-strip
#make
#make install
x264编译也不会出现问题的,如果有,把之前安装的pc端的x264全部删掉
2.测试X264是否在ARM平台下编译好
把之前采集的.yuv视频命名为 test_352x288.yuv 分辨率可选,这一点很重要
然后运行./x264 -o test.H264 test_352x288.yuv 可执行文件在bin文件中
然后用暴风影音播放看.H264文件能否放出
主要使用其中的libx264.a库
关于把采集出的图像进行编码可以参见http://download.csdn.net/detail/zhangzhenyuancs/4771445
这里每采集出一帧.yuv数据,就把它进行H264编码。
- linux编译ffmjpg和x264总结
- x264 编译总结
- Linux 编译 X264
- linux 下编译x264
- x264和ac编译
- 在linux编译和运行x264及ffmpeg(转)
- linux编译x86和arm平台的x264
- linux下编译faac和x264的库
- linux编译x86和arm平台的x264
- Linux下编译ffmpeg和x264支持的opencv
- linux下编译faac和x264的库
- arm-linux-gcc编译x264
- arm-linux-gcc编译x264
- arm-linux-gcc编译x264
- linux下编译调试x264
- Linux 下编译 x264源码
- linux下编译调试x264
- FFMPEG编译x264和mp3
- linux c++ 多线程 互斥访问
- servlet中获取jsp中的空值问题
- CentOS安装PostGIS
- system troubleshooting
- SGU104 DP
- linux编译ffmjpg和x264总结
- 常见的各种操作延迟时间
- visual studio 2013 Entity Framework 6 MVC 5 体验(一)修改默认数据库,增加自定义字段
- Ubuntu12.04LTS gcc g++版本设置
- 關於Cross Join 和 Outer/Cross Apply
- ibatis入门示例
- Windows 7 系统 优化、调整、恢复(兼SSD优化)
- C++ 中string.find() 函数的用法总结
- SQL无法启动-TDSSNIClient 初始化失败,出现错误 0x277a,状态代码 0xa