Ubuntu下安装FFmepg和SDL以及测试
2011-09-02 13:23
309 查看
我在安装时,把用户模式切换到了root,方便安装。
ubuntu下切换root模式:
sudo -s -H
1,FFmpeg的安装
a,下载源码
ffmpeg官网下载地址:http://www.ffmpeg.org/download.html。
目前看到的最新版本为ffmpeg-0.7.1.tar.bz2(Peace)。
http://www.ffmpeg.org/releases/ffmpeg-0.7.1.tar.bz2
b, 在cd到/soft下新建目录 ffmpeg, 并将源码解压至该目录
sudo mkdir ffmpeg
更改权限: chmod 777 ffmpeg
tar xjvf ffmpeg-0.7.1.tar.bz2 .
cd ffmpeg/ffmpeg-0.7.1
c, 配置文件
./configure --prefix=/usr/local --enable-memalign-hack --enable-shared --disable-yasm --enable-swscale
d, make & make install
<Life is waiting....>
<So you can slow down to feel "The Terminal"by Tom Hanks>
e, 运行ffmpeg时报错:
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory
解决方法:
编辑/etc/ld.so.conf 在文件末行加入
/usr/local/lib
运行
ldffmpeg
没有报错的话,ffmpeg安装完毕。
ffmpeg -version 显示版本信息
ffmpeg version 0.7.1, Copyright (c) 2000-2011 the FFmpeg developers
built on Jul 27 2011 19:28:53 with gcc 4.4.3
configuration: --prefix=/usr/local --enable-memalign-hack --enable-shared --disable-yasm
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.122. 0 / 52.122. 0
libavformat 52.110. 0 / 52.110. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
ffmpeg 0.7.1
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.122. 0 / 52.122. 0
libavformat 52.110. 0 / 52.110. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
f , 拿tutorial01.c试刀
编译的时候,出现了以下的问题,这些问题已经有网友解决。再贴一次吧。
Q1:出现“undefined reference to 'img_convert' ”错误
A1:原因在于ffmpeg在版本0.4.8之后改进了格式转换函数,将img_convert改进为sws_scale函数。
该函数以一个SwsContext结构作为缩放控制结构,该结构通过sws_getContext函数返回。
sws_getContext原型:
sws_scale原型:
在tutorial01.c中,将原文件修改为:
Q2:编译时出现“undefined reference to `sws_getContext'”错误。
A2:原因是gcc编译选项要添加swscale库.具体为:
gcc -o tutorial01 tutorial01.c -lavformat -lavcodec -lz -lswscale
2, SDL安装
a, 下载源码
SDL官网地址:http://www.libsdl.org/download-1.2.php
b, 安装
和安装ffmpeg一样,在soft目录下新建目录sdl,将源码包解压在该目录下
tar xvzf SDL-1.2.14.tar.gz
解压完毕后,进入安装目录,运行一下命令:
./configure
make
make install
OK,
运行 sdl-config --version
1.2.14
c, tutorial03.c验证
其他改变和tutorial02.c一样,其中将sws_scale函数改为
Q: 编译tutorial04.c的时候,出现“undefined reference to `pstrcpy' "错误,
A: 新版本的ffmpeg将函数pstrcpy替换为了av_strlcpy。两个函数的原型分别为:
3, FFMPEG的卸载
如果你找到了新的版本,那么,为了以后编译由于不同版本之间的差异带来的令人抓狂的报错,还是先卸载旧的版本吧。
a, apt-get remove ffmpeg
b, apt-get remove libavcodec52 libavdevice52 libavfilter0
libavformat52 libavutil49
这里由于不同机子安装了不同的库,可以根据实际情况作出修改。
或者手动删除相关的库文件以及头文件
a, /usr/local/lib
b, /usr/local/lnclude
<仅供参考>
ubuntu下切换root模式:
sudo -s -H
1,FFmpeg的安装
a,下载源码
ffmpeg官网下载地址:http://www.ffmpeg.org/download.html。
目前看到的最新版本为ffmpeg-0.7.1.tar.bz2(Peace)。
http://www.ffmpeg.org/releases/ffmpeg-0.7.1.tar.bz2
b, 在cd到/soft下新建目录 ffmpeg, 并将源码解压至该目录
sudo mkdir ffmpeg
更改权限: chmod 777 ffmpeg
tar xjvf ffmpeg-0.7.1.tar.bz2 .
cd ffmpeg/ffmpeg-0.7.1
c, 配置文件
./configure --prefix=/usr/local --enable-memalign-hack --enable-shared --disable-yasm --enable-swscale
d, make & make install
<Life is waiting....>
<So you can slow down to feel "The Terminal"by Tom Hanks>
e, 运行ffmpeg时报错:
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory
解决方法:
编辑/etc/ld.so.conf 在文件末行加入
/usr/local/lib
运行
ldffmpeg
没有报错的话,ffmpeg安装完毕。
ffmpeg -version 显示版本信息
ffmpeg version 0.7.1, Copyright (c) 2000-2011 the FFmpeg developers
built on Jul 27 2011 19:28:53 with gcc 4.4.3
configuration: --prefix=/usr/local --enable-memalign-hack --enable-shared --disable-yasm
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.122. 0 / 52.122. 0
libavformat 52.110. 0 / 52.110. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
ffmpeg 0.7.1
libavutil 50. 43. 0 / 50. 43. 0
libavcodec 52.122. 0 / 52.122. 0
libavformat 52.110. 0 / 52.110. 0
libavdevice 52. 5. 0 / 52. 5. 0
libavfilter 1. 80. 0 / 1. 80. 0
libswscale 0. 14. 1 / 0. 14. 1
f , 拿tutorial01.c试刀
编译的时候,出现了以下的问题,这些问题已经有网友解决。再贴一次吧。
Q1:出现“undefined reference to 'img_convert' ”错误
A1:原因在于ffmpeg在版本0.4.8之后改进了格式转换函数,将img_convert改进为sws_scale函数。
该函数以一个SwsContext结构作为缩放控制结构,该结构通过sws_getContext函数返回。
sws_getContext原型:
SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int dstW, int dstH, enum PixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param);
sws_scale原型:
int sws_scale(SwsContext *c, const uint8_t* const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t* const dst[], const int dstStride[]);
在tutorial01.c中,将原文件修改为:
#include <swscale.h> // other code static struct SwsContext *img_convert_ctx; //other code img_convert_ctx = sws_getContext(pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx->height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL); // other code sws_scale(img_convert_ctx, (const uint8_t* const *)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pFrameRGB->data, pFrameRGB->linesize); // other code
Q2:编译时出现“undefined reference to `sws_getContext'”错误。
A2:原因是gcc编译选项要添加swscale库.具体为:
gcc -o tutorial01 tutorial01.c -lavformat -lavcodec -lz -lswscale
2, SDL安装
a, 下载源码
SDL官网地址:http://www.libsdl.org/download-1.2.php
b, 安装
和安装ffmpeg一样,在soft目录下新建目录sdl,将源码包解压在该目录下
tar xvzf SDL-1.2.14.tar.gz
解压完毕后,进入安装目录,运行一下命令:
./configure
make
make install
OK,
运行 sdl-config --version
1.2.14
c, tutorial03.c验证
其他改变和tutorial02.c一样,其中将sws_scale函数改为
sws_scale(img_convert_ctx, (const uint8_t* const *)pFrame->data, pFrame->linesize, 0, pCodecCtx->height, pict.data, pict.linesize);
Q: 编译tutorial04.c的时候,出现“undefined reference to `pstrcpy' "错误,
A: 新版本的ffmpeg将函数pstrcpy替换为了av_strlcpy。两个函数的原型分别为:
void pstrcpy(char *dst, size_t size, const char *src) size_t av_strlcpy(char *dst, const char *src, size_t size)
3, FFMPEG的卸载
如果你找到了新的版本,那么,为了以后编译由于不同版本之间的差异带来的令人抓狂的报错,还是先卸载旧的版本吧。
a, apt-get remove ffmpeg
b, apt-get remove libavcodec52 libavdevice52 libavfilter0
libavformat52 libavutil49
这里由于不同机子安装了不同的库,可以根据实际情况作出修改。
或者手动删除相关的库文件以及头文件
a, /usr/local/lib
b, /usr/local/lnclude
<仅供参考>
相关文章推荐
- 【以太坊】ubuntu安装以太坊ethereum的测试网络ropsten-net以及雷电网络raiden-network环境
- SDL2.0在Ubuntu14.04下的安装及测试
- Ubuntu环境下Thrift的安装、编译以及测试
- ubuntu 上安装opencv以及测试
- Ubuntu16.04下安装Anaconda3过程python3.6使用,以及重新建立新的Python2.7并安装tensorflow-gpu,测试并成功。
- ubuntu下nfs安装以及测试
- Thrift 学习笔记1——Ubuntu环境下Thrift的安装、编译以及测试 - 张进の专栏 - 博客频道 - CSDN.NET
- 在ubuntu下安装并测试pig以及常见的问题
- Thrift 学习笔记1——Ubuntu环境下Thrift的安装、编译以及测试
- HTK 安装、编译以及测试——Ubuntu 16.04
- HTK 安装、编译以及测试——Ubuntu 14.04
- Thrift 学习笔记1——Ubuntu环境下Thrift的安装、编译以及测试
- Ubuntu 安装 Mysql 以及主(主)从复制
- ubuntu上安装和设置samba,和windows共享(转来的,经过测试OK)
- Ubuntu Apache的安装和配置以及CGI的设置
- ubuntu16.04安装NIVIDIA显卡驱动,cuda8.0,cuDNN6.0以及基于Anaconda安装Tensorflow-GPU
- Ubuntu下安装最新OpenJdk1.8以及与jdk1.8的区别(网络整理)
- Ubuntu Navicat for MySQL安装以及破解方案
- Linux之CentOS--Nginx的安装、测试详解以及关于Nginx的常用命令介绍
- 在Ubuntu15.04上安装Docker的步骤以及基本用法