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步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...
随机推荐
- SVG布局
http://www.w3cplus.com/html5/nesting-svgs.html
- 【BZOJ5005】乒乓游戏 [线段树][并查集]
乒乓游戏 Time Limit: 10 Sec Memory Limit: 256 MB Description Input Output Sample Input 5 1 1 5 1 5 11 2 ...
- hdu 3003 Pupu
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3003 题目大意:一种动物身上有n种不同的皮肤,每种皮肤有透明很不透明两种状态,经过一天的日晒,透明的可 ...
- 图的遍历[DFS][BFS]
#include<iostream> #include<iostream> #include<cstring> #include<queue> #inc ...
- c#读取LOG文件并解决读取提示被其他进程占用问题
c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题. 文件“C:\u_ex.log”正由另一进程使用,因此该进程无法访问该文件. u_ex.log是一个日 ...
- AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792
由乃与大母神原型和偶像崇拜 思路: 逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值: 代码: #include <bits/stdc++.h> using namespace ...
- Allocate exception for servlet XXX 基本异常
HTTP Status 500 - Error instantiating servlet class cn.tedu.servlet 错误!! 解决方案: 查看当前项目下的web.xm文件的真 ...
- STL模板整理 set
SET set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序.应该注意的是set中数元素的值不能直接被 ...
- scrapy xpath 从response中获取li,然后再获取li中img的src
lis = response.xpath("//ul/li") for li in lis: src = li.xpath("img/@src") # 如果xp ...
- CF 1005A Tanya and Stairways 【STL】
Little girl Tanya climbs the stairs inside a multi-storey building. Every time Tanya climbs a stairw ...