FFmpeg学习起步 —— 环境搭建

下面是我搭建FFmpeg学习环境的步骤。

  • 在Ubuntu下

http://www.ffmpeg.org/download.html下载最新的FFmpeg版本,我的版本是ffmpeg-2.7.2。

编译:

tar -xf ffmpeg-2.7.2.tar.bz2
mkdir build
cd build/
../ffmpeg-2.7.2/configure --enable-shared
make
sudo make install

在build/config.mak中可以看到将动态库和静态库安装到什么位置了:

# Automatically generated by configure - do not modify!
ifndef FFMPEG_CONFIG_MAK
FFMPEG_CONFIG_MAK=1
FFMPEG_CONFIGURATION= --enable-shared
prefix=/usr/local
LIBDIR=$(DESTDIR)${prefix}/lib
SHLIBDIR=$(DESTDIR)${prefix}/lib
INCDIR=$(DESTDIR)${prefix}/include
BINDIR=$(DESTDIR)${prefix}/bin
DATADIR=$(DESTDIR)${prefix}/share/ffmpeg
DOCDIR=$(DESTDIR)${prefix}/share/doc/ffmpeg
MANDIR=$(DESTDIR)${prefix}/share/man
PKGCONFIGDIR=$(DESTDIR)${prefix}/lib/pkgconfig
SRC_PATH=/home/pengdl/work/study/FFmpeg/ffmpeg-2.7.2
... ...

可以看到,拷贝到了/usr/local/lib下。

ls /usr/local/lib
icu                      libavdevice.a            libavfilter.so.5          libavutil.a             libswresample.so.1        ocaml      tmp
lib64OpenglRender.so     libavdevice.so           libavfilter.so.5.16.101   libavutil.so            libswresample.so.1.2.100  openssl
libavcodec.a             libavdevice.so.56        libavformat.a             libavutil.so.54         libswscale.a              p4v
libavcodec.so            libavdevice.so.56.4.100  libavformat.so            libavutil.so.54.27.100  libswscale.so             pkgconfig
libavcodec.so.56         libavfilter.a            libavformat.so.56         libswresample.a         libswscale.so.3           python2.7
libavcodec.so.56.41.100  libavfilter.so           libavformat.so.56.36.100  libswresample.so        libswscale.so.3.1.101     python3.4

下面写个简单的测试程序,分别用静态库和动态库测试,二者的区别主要在Makefile上。

测试文件 demo.c

#include <stdio.h>
#include <libavcodec/avcodec.h>

int main(int argc, const char *argv[])
{
    printf("%s\n", avcodec_configuration());
    return 0;
}

1、动态库

Makefile的内容如下:

LIBS_DIR=-L/usr/local/lib

LIBS=-lavcodec
LIBS+=-lavfilter
LIBS+=-lavdevice
LIBS+=-lswresample
LIBS+=-lswscale
LIBS+=-lavformat
LIBS+=-lavutil

INC=-I/usr/local/include
INC+=-I/usr/local/include/libavcodec
INC+=-I/usr/local/include/libavdevice
INC+=-I/usr/local/include/libavfilter
INC+=-I/usr/local/include/libavformat
INC+=-I/usr/local/include/libavutil
INC+=-I/usr/local/include/libswresample
INC+=-I/usr/local/include/libswscale

demo:demo.o
    gcc demo.o -o [email protected] $(LIBS_DIR) $(LIBS)

demo.o:demo.c
    gcc $(INC) -c  $^ -o [email protected]

clean:
    rm demo

运行:

ls -lh demo
-rwxrwxr-x 1 pengdl pengdl 8.5K 12月 31 16:11 demo
./demo
--arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version=‘6:11-1‘ --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --disable-avserver --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static

2、静态库

现将/usr/local/lib下的动态库移动到其他位置,Makefile的内容如下:

LIBS_DIR=-L/usr/local/lib

LIBS=-lavcodec
LIBS+=-lavfilter
LIBS+=-lavdevice
LIBS+=-lswresample
LIBS+=-lswscale
LIBS+=-lavformat
LIBS+=-lavutil

LIBS+=-lpthread
LIBS+=-lm

INC=-I/usr/local/include
INC+=-I/usr/local/include/libavcodec
INC+=-I/usr/local/include/libavdevice
INC+=-I/usr/local/include/libavfilter
INC+=-I/usr/local/include/libavformat
INC+=-I/usr/local/include/libavutil
INC+=-I/usr/local/include/libswresample
INC+=-I/usr/local/include/libswscale

demo:demo.o
    gcc demo.o -o [email protected] $(LIBS_DIR) $(LIBS)

demo.o:demo.c
    gcc $(INC) -c  $^ -o [email protected]

clean:
    rm demo

注意,其中静态库的顺序如果排列有问题,会导致编译错误,如将libavutil放在libavcodec的前面,就会导致编译错误。

运行:

ls -lh demo
-rwxrwxr-x 1 pengdl pengdl 3.8M 12月 31 16:08 demo
[email protected]-HP:~/work/study/FFmpeg/FFmpeg/demo$ ./demo
--enable-shared

  • 在wind7下

在win7下使用的开发工具VS2013,我的win7是64位的。

可以从http://ffmpeg.zeranoe.com/builds/下载需要的动态库和静态库,这里需要注意的是32位和64位要搞清楚。

如果是32位:

下载如果所示的两个,shared的下载包里有ffmpeg的动态库,dev的下载包里有静态库。

ffmpeg-20151227-git-baf4c48-win32-dev.7z

ffmpeg-20151227-git-baf4c48-win32-shared.7z

打开vs2013,新建一个控制台应用程序,将shared包里bin目录下的动态库拷贝到工程目录下,井dev下的lib和include也拷贝到工程目录下,如下图:

右击工程名,选择属性,作如下设置:

1. C/C++ ---> 附加包含目录 ---> 设置为include或者设置为include的绝对路径 E:\VC++\FFmpeg\testFFmpeg_32\testFFmpeg\include

2. 链接器 --> 常规 ---> 附加库目录 ---> 设置为lib 或者 设置为lib的绝对路径 E:\VC++\FFmpeg\testFFmpeg_32\testFFmpeg\lib

3. 链接器 --> 输入 ---> 附加依赖项 --->  设置为刚才添加的静态库

点击确定。

测试程序 testFFmpeg.cpp :

#include "stdafx.h"

//Windows
extern "C"
{
#include "libavcodec/avcodec.h"
};

int _tmain(int argc, _TCHAR* argv[])
{
    printf("\n<<Configuration>>\n%s", avcodec_configuration());

    return 0;
}

运行

点击 调试 ---> 开始执行(不调试) 或者 Ctrl + F5

如果是64位,

下面是用到的两个下载包:

ffmpeg-20151227-git-baf4c48-win64-dev.7z

ffmpeg-20151227-git-baf4c48-win64-shared.7z

配置方法与32位类似,不同的是建立的工程需要是x64位的,同时再将用到的动态库拷贝到 C:\Windows\system 下。

完。

时间: 2024-10-12 21:14:06

FFmpeg学习起步 —— 环境搭建的相关文章

【golang学习】环境搭建

近期项目的需要开始了学习golang的旅程,在此将学习的过程做以记录,方便查看,也希望帮助到大家. 由于我使用的是64位linux环境(redhat 5.2),所以这里就介绍64位的安装方式,其他类似: 1. 下载安装包 自从2014年5月谷歌在国内被封杀之后,我们下载go安装包也得翻墙了,但是为了方便我上传了一个64位linux的包在(地址),你可以直接下载使用. 2.安装 下载完上传到你的linux系统中,比如/opt/go1.1.1.linux-amd64.tar.gz,这是就开始安装了,

Angularjs学习---angularjs环境搭建,ubuntu 12.04下安装nodejs、npm和karma

1.下载angularjs 进入其官网下载:https://angularjs.org/?,建议下载最新版的:https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.7/angular.js 所有版本:https://code.angularjs.org/ 2.示例1 HelloWorld ! 新建一个helloworld.html <!doctype html> <html ng-app> <head> &

Android学习之环境搭建

Android学习之环境搭建 园里有很多关于Android开发的环境搭建的资料,本人是安卓开发初学者,这里记录一下个人搭建Android环境的总结. 1.准备Eclipse IDE for Java Developers 网上可以下载的版本还是比较多的,本人选择了eclipse-java-luna-SR2-win32. 网址:http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/lunasr2 Note:官网点

CouchBase学习之环境搭建以及HelloWorld

一.引言 NoSQL(Not Only SQL),火了很久了,一直没空研究.最近手上一个项目对Cache有一定的要求,借此机会对NoSQL入门一下.支持NoSQL的数据库系统有很多,  比如Redis,MongoDB等.每种系统都有自己的优缺点,根据实际情况我们选用了CouchBase作为切入点学习.这里有几种数据库的比较:http://www.csdn.net/article/2013-04-15/2814886-nosql-benchmark CouchBase,是MemBase与couch

JavaWeb学习之环境搭建

1. HTML(Hyper Text Markup Language) , 超文本标记语言. HTML文件的后缀名一般是: .htm , .html 表单(form): 浏览器内核: WebKit , trident Javascript:alert(‘?’);  --->java脚本语言 我的第一个html程序: 代码如下: 1 <html> 2 <head> 3 <title> 龚细军的网站</title> 4 </head> 5 6

hbase_学习_01_HBase环境搭建(单机)

一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机)  ,主要是搭建HBase的单机环境 二.环境准备 在虚拟机中: 操作系统 : linux CentOS 6.8 jdk:1.7 hadoop:2.8.3 hbase:1.4.2 三.hbase下载 1.hbase下载地址 http://mirror.bit.edu.cn/apache/hbase/1.4.2/hbase-1.4.2-bin.tar.gz 2.下载hbase wget http://mirror.bi

深度学习开发环境搭建

深度学习开发环境搭建 https://www.cnblogs.com/ai-developer/p/10022115.html 工欲善其事,必先利其器.首先我们需要花费一些时间来搭建开发环境. 1.安装python.python是人工智能开发首选语言. 2.安装virtualenv.virtualenv可以为一个python应用创建一套隔离的运行环境,避免不同版本的python或第三方库互相影响.类似的虚拟环境还有anaconda,anaconda自带常用库,因此安装包有几百兆,与anacond

LINUX内核学习起步:学习开发环境搭建

我的环境配置如下: 电脑上安装虚拟机VMware10.0.1,虚拟机上安装了CentOS6.5,注意虚拟机VMware上面网络的配置选择为桥接模式 电脑windows上安装secureCRT6,事先登录虚拟机中的centos,查询机器IP地址,然后通过secureCRT登录到centos中. 这里为什么要通过secureCRT登录centos呢?因为在centos中直接运行终端或者alt+F1~5方式进入命令行模式,显示的界面太小,不方便操作. 如果你经常要在linux下编程或者学习,建议还是通

JAVA基础学习——1.环境搭建 (系统Win10,64bit)

大学里虽然老师教过JAVA,但我没学.后来工作了,断断续续的也碰到了JAVA的项目,都是拉过来就干的节奏.也没有好好系统的学习一下. 从今天开始系统学习整理一下JAVA,以后再碰到JAVA项目的时候,心里也踏实点.咱也是正儿八经学过的人了,发发博客就当做个笔记,有不足的地方,大家多多指点,先在这里谢谢大家. 1.  环境搭建第一步,安装JDK. JDK 是Java开发工具包 (Java Development Kit ) 的缩写. JDK 是一系列工具的集合,这些工具是编译Java源码.运行Ja