FFmpeg学习起步 —— 环境搭建
下面是我搭建FFmpeg学习环境的步骤。
一、在Ubuntu下
从http://www.ffmpeg.org/download.html下载最新的FFmpeg版本,我的版本是ffmpeg-2.7.2。
编译:
tar -xf ffmpeg-2.7..tar.bz2
mkdir build
cd build/
../ffmpeg-2.7./configure --enable-shared
make
sudo make install
在build/config.mak中可以看到将动态库和静态库安装到什么位置了:
# Automatically generated by configure - do not modify!
ifndef FFMPEG_CONFIG_MAK
FFMPEG_CONFIG_MAK=
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.
... ...
可以看到,拷贝到了/usr/local/lib下。
ls /usr/local/lib
icu libavdevice.a libavfilter.so. libavutil.a libswresample.so. ocaml tmp
lib64OpenglRender.so libavdevice.so libavfilter.so.5.16. libavutil.so libswresample.so.1.2. openssl
libavcodec.a libavdevice.so. libavformat.a libavutil.so. libswscale.a p4v
libavcodec.so libavdevice.so.56.4. libavformat.so libavutil.so.54.27. libswscale.so pkgconfig
libavcodec.so. libavfilter.a libavformat.so. libswresample.a libswscale.so. python2.
libavcodec.so.56.41. libavfilter.so libavformat.so.56.36. libswresample.so libswscale.so.3.1. python3.
下面写个简单的测试程序,分别用静态库和动态库测试,二者的区别主要在Makefile上。
测试文件 demo.c
#include <stdio.h>
#include <libavcodec/avcodec.h> int main(int argc, const char *argv[])
{
printf("%s\n", avcodec_configuration());
return ;
}
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 $@ $(LIBS_DIR) $(LIBS) demo.o:demo.c
gcc $(INC) -c $^ -o $@ clean:
rm demo
运行:
ls -lh demo
-rwxrwxr-x pengdl pengdl .5K 12月 : 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 $@ $(LIBS_DIR) $(LIBS) demo.o:demo.c
gcc $(INC) -c $^ -o $@ clean:
rm demo
注意,其中静态库的顺序如果排列有问题,会导致编译错误,如将libavutil放在libavcodec的前面,就会导致编译错误。
运行:
ls -lh demo
-rwxrwxr-x pengdl pengdl 3.8M 12月 : demo
pengdl@pengdl-HP:~/work/study/FFmpeg/FFmpeg/demo$ ./demo
--enable-shared
二、在wind7下
在win7下使用的开发工具VS2013,我的win7是64位的。
可以从http://ffmpeg.zeranoe.com/builds/下载需要的动态库和静态库,这里需要注意的是32位和64位要搞清楚。
1、32位
下载如果所示的两个,shared的下载包里有ffmpeg的动态库,dev的下载包里有静态库。
ffmpeg-20151231-git-4160900-win32-dev.7z
ffmpeg-20151231-git-4160900-win32-shared.7z
打开vs2013,新建一个控制台应用程序,将shared包里bin目录下的动态库拷贝到C:\Windows\system下,如下图:
将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 ;
}
运行
点击 调试 ---> 开始执行(不调试) 或者 Ctrl + F5
2、64位
下面是用到的两个下载包:
ffmpeg-20151231-git-4160900-win64-dev.7z
ffmpeg-20151231-git-4160900-win64-shared.7z
配置方法与32位类似,不同的是建立的工程需要是x64位的,同时再将用到的动态库拷贝到 C:\Windows\system 下。
完。
FFmpeg学习起步 —— 环境搭建的更多相关文章
- hive_学习_01_hive环境搭建(单机)
一.前言 本文承接上一篇:hbase_学习_01_HBase环境搭建(单机),主要是搭建 hive 的单机环境 二.环境准备 1.说明 hive 的下载来源有: 官方版本:http://archive ...
- hbase_学习_01_HBase环境搭建(单机)
一.前言 本文承接上一篇:hadoop_学习_02_Hadoop环境搭建(单机) ,主要是搭建HBase的单机环境 二.环境准备 1.说明 hbase 的下载来源有: 官方版本:http://arc ...
- hadoop_学习_02_Hadoop环境搭建(单机)
一.环境准备 1.说明 hadoop的下载来源有: 官方版本:http://archive.apache.org/dist/hadoop/ CDH版本:http://archive.cloudera. ...
- 从0开始学爬虫9之requests库的学习之环境搭建
从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...
- Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda
Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...
- ubuntu 深度学习cuda环境搭建,docker-nvidia 2019-02
ubuntu 深度学习cuda环境搭建 ubuntu系统版本 18.04 查看GPU型号(NVS 315 性能很差,比没有强) 首先最好有ssh服务,以下操作都是远程ssh执行 lspci | gre ...
- Python基础学习之环境搭建
Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...
- 001-深度学习Pytorch环境搭建(Anaconda , PyCharm导入)
001-深度学习Pytorch环境搭建(Anaconda , PyCharm导入) 在开始搭建之前我们先说一下本次主要安装的东西有哪些. anaconda 3:第三方包管理软件. 这个玩意可以看作是一 ...
- 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)
前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...
随机推荐
- linux下输出tomcat控制台信息
进入tomcat/logs/目录执行命令:tail -f catalina.out即可
- GridPanel 带头和锁定列共存
该功能还存在很多BUG,仅供参考 Ext.net.ResourceMgr.load([{ url: _HOST + "Js/OverwriteExtjs/LockingHeaderGroup ...
- linux基础之nginx和nfs服务
第一部分: 一.nginx服务安装nginx包(源码安装)1.先cd /etc/yum.repos.d目录下2.yum install epel-release -y(安装扩展包)3.yum in ...
- 使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】
转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 ...
- Linux内核完全剖析基于0.12内核
控制寄存器(CR0,CR1,CR2,CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性.CR0中含有控制处理器操作模式和状态的系统控制标志,CR1保留不用,CR2含有导致页错误的线性地址,C ...
- selenium与360极速浏览器driver配置
1)下载浏览器对应的driver,浏览器版本与driver对应关系,网址:http://www.cnblogs.com/JHblogs/p/7699951.html:driver下载地址:http:/ ...
- pressmuSpiderr
#!/usr/bin/env python # encoding: utf-8 import requests from random import choice from lxml import h ...
- 利用git把本地项目传到github+将github中已有项目从本地上传更新
利用git把本地项目传到github中 1.打开git bash命令行,进入到要上传的项目中,比如Spring项目,在此目录下执行git init 的命令,会发下在当前目录中多了一个.git的文件夹( ...
- [ LDAP ] LDAP服务搭建及应用
ldap 搭建及应用 node1: 192.168.118.14node2: 192.168.118.25 ldap server : 192.168.118.14 1. 安装LDAP服务器 [roo ...
- 微信支付http://www.cnblogs.com/True_to_me/p/3565039.html
公众号支付有2种支付方式: JS API 支付:是指用户打开图文消息或者扫描二维码,在微信内置浏览器打开网页进行的支付.商户网页前端通过使用微信提供的 JS API,调用微信支付模块.这种方式,适合需 ...