当前位置: 首页 > 编程日记 > 正文

FFmpeg简介及在vc2010下编译步骤

FFmpeg是一个开源的多媒体库,最新版本是2.4.3,它的License是LGPL或GPL。FFmpeg可以用来记录、转换数字音频、视频,并能将其转换为流的开源计算机程序。它包括了音/视频编码库libavcodec。FFmpeg是在Linux下开发出来的,但它可以在包括Windows在内的大多数操作系统中编译。它可以轻易地实现多种视频格式之间的相互转换。

FFmpeg用vs2010编译步骤:

1.  从https://www.ffmpeg.org/download.html下载最新版本2.4.3,将其解压缩到E:\FFmpeg\ffmpeg-2.4.3下;

2.   从http://sourceforge.net/projects/mingw/files/下载mingw-get-setup.exe 并仿照http://blog.csdn.net/fengbingchun/article/details/7335741中步骤进行安装,除选择安装MinGW外,还需选择安装MSYS;并将C:\MinGW\bin和C:\MinGW\msys\1.0\bin加入到系统环境变量PATH中;

3.  从https://github.com/libav/c99-to-c89/releases 下载c99-to-c89-1.0.2.zip,解压缩,并将c99conv.exe和c99warp.exe复制到C:\MinGW\msys\1.0\bin目录下;

4.  从http://code.google.com/p/msinttypes/downloads/list下载c99头文件inttypes.h和stdint.h(msinttypes),并将其复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include 目录下;

5.  从http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=1683下载pkg-config-0.23,解压缩,并将pkg-config.exe复制到C:\MinGW\msys\1.0\bin目录下,有时还需下载intl.dll等库,将其复制到pkg-config.exe同一目录下;

6.  从http://yasm.tortall.net/Download.html下载win32VS2010.zip(或Win32.exe),解压缩,并将vsyasm.exe改名为yasm.exe复制到C:\MinGW\msys\1.0\bin目录下;

7.  将其msys.bat改名为msys_vs2010.bat,并在msys_vs2010.bat文件的开头加入call"C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\bin\vcvars32.bat" ;

8.  重命名C:\MinGW\msys\1.0\bin下link.exe为link_msys.exe,这是为了防止此link.exe与vc2010中的link.exe发生冲突,编译完ffmpeg后需要再次修改回来;

9.  双击运行msys_vs2010.bat,使用cd命令将其定位到E:\FFmpeg\ffmpeg-2.4.3;接着依次输入命令:./configure  --enable-shared –disable-static –prefix=./build_vs2010  --toolchain=msvc  >log.txt;  make;   make install;

10.             执行以上命令后会在E:\FFmpeg\ffmpeg-2.4.3目录下生成一个vs2010_dll文件夹,此文件夹下包括bin、include、lib、share四个文件,这是动态库,若要生成debug的静态库,则相应命令为./configure  --enable-static –enable-debug--prefix=./vs2010_lib_debug        --toolchain=msvc  >log.txt;更多其它选项可查看configure文件.

以下对上面生成的各个库进行简单的说明,摘自https://www.ffmpeg.org/documentation.html

1.      libavutil:The libavutillibrary is a utility library to aid portable multimedia programming. Itcontains safe portable string functions, random number generators, data structures,additional mathematics functions, cryptography and multimedia relatedfunctionality (like enumerations for pixel and sample formats). It is not alibrary for code needed by both libavcodec and libavformat.

2.      libswscale: The libswscalelibrary performs highly optimized image scaling and colorspace and pixel formatconversion operations. Specifically, this library performs the followingconversions:(1).Rescaling: is the process of changing the video size. Severalrescaling options and algorithms are available. This is usually a lossyprocess.(2).Pixel format conversion: is the process of converting the imageformat and colorspace of the image, for example from planar YUV420P to RGB24packed. It also handles packing conversion, that is converts from packed layout(all pixels belonging to distinct planes interleaved in the same buffer), toplanar layout (all samples belonging to the same plane stored in a dedicatedbuffer or "plane").This is usually a lossy process in case the sourceand destination colorspaces differ.

3.      libswresample: The libswresamplelibrary performs highly optimized audio resampling, rematrixing and sampleformat conversion operations.Specifically, this library performs the followingconversions:(1).Resampling: is the process of changing the audio rate, forexample from a high sample rate of 44100Hz to 8000Hz. Audio conversion fromhigh to low sample rate is a lossy process. Several resampling options andalgorithms are available.(2).Format conversion: is the process of convertingthe type of samples, for example from 16-bit signed samples to unsigned 8-bitor float samples. It also handles packing conversion, when passing from packedlayout (all samples belonging to distinct channels interleaved in the samebuffer), to planar layout (all samples belonging to the same channel stored ina dedicated buffer or "plane").(3).Rematrixing: is the process ofchanging the channel layout, for example from stereo to mono. When the inputchannels cannot be mapped to the output streams, the process is lossy, since itinvolves different gain factors and mixing. Various other audio conversions(e.g. stretching and padding) are enabled through dedicated options.

4.      libavcodec: The libavcodeclibrary provides a generic encoding/decoding framework and contains multipledecoders and encoders for audio, video and subtitle streams, and severalbitstream filters.The shared architecture provides various services rangingfrom bit stream I/O to DSP optimizations, and makes it suitable forimplementing robust and fast codecs as well as for experimentation.

5.      libavformat: The libavformatlibrary provides a generic framework for multiplexing and demultiplexing(muxing and demuxing) audio, video and subtitle streams. It encompassesmultiple muxers and demuxers for multimedia container formats.It also supportsseveral input and output protocols to access a media resource.

6.      libavdevice: The libavdevicelibrary provides a generic framework for grabbing from and rendering to manycommon multimedia input/output devices, and supports several input and outputdevices, including Video4Linux2, VfW, DShow, and ALSA.

7.      libavfilter: The libavfilterlibrary provides a generic audio/video filtering framework containing severalfilters, sources and sinks.

参考文献:

1.      https://www.ffmpeg.org/platform.html

2.      http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=1683

3.      http://www.cnblogs.com/xylc/p/3683203.html

4.      http://blog.csdn.net/heng615975867/article/details/21601617

相关文章:

医院六级电子病历建设思路及要点

产生背景 在医院电子病历信息化发展的过程中,先后经历了纸质病历、电子病历、结构化电子病历以及具有全医疗过程管理能力的电子病历四个阶段。临床业务需求质量的逐步提升,标准规范的逐步细化,互联网战略的落地实施,无疑对目前电子…

上手必备!不可错过的TensorFlow、PyTorch和Keras样例资源

作者 | 黄海广来源 | 机器学习初学者(ID: ai-start-com)TensorFlow、Keras和PyTorch是目前深度学习的主要框架,也是入门深度学习必须掌握的三大框架,但是官方文档相对内容较多,初学者往往无从下手。本人从github里搜到…

Linux下gdb调试工具的使用

gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。 gdb主要完成四个方面的功能:(1)、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序;(2)、可让被调试的程序在你所指定的调试的断点处停住(断点可以是条件表达式)&#xf…

UESTC 1726 整数划分(母函数)

题目链接&#xff1a;http://222.197.181.5/problem.php?pid1726 题意&#xff1a;求n的划分数。一种划分方案中不能有相同的数字。 思路&#xff1a;(1x)(1x^2)(1x^3)……(1x^1000). int f[N];void init() {f[1]1;int a[N]{0};a[0]1; a[1]1;int i,j;for(i2;i<1000;i){for(…

JS nodeType返回类型

JS nodeType返回类型 前几天朋友正好问道 这个 js的nodeType是个什么概念&#xff08;做浏览器底层的&#xff09;正好遇到这篇文章可以向大家解释下 将HTML DOM中几个容易常用的属性做下记录&#xff1a; nodeName、nodeValue 以及 nodeType 包含有关于节点的信息。 nodeName …

C# 获取指定目录下所有文件信息、移动目录、拷贝目录

/// <summary>/// 返回指定目录下的所有文件信息/// </summary>/// <param name"strDirectory"></param>/// <returns></returns>public List<FileInfo> GetAllFilesInDirectory(string strDirectory){List<FileInfo&g…

文件夹浏览(SHBrowseForFolder)

from http://www.cnblogs.com/Clingingboy/archive/2011/04/16/2018284.html 一.首先要为SHBrowseForFolder准备一个结构体BROWSEINFO typedef struct _browseinfoW {HWND hwndOwner;PCIDLIST_ABSOLUTE pidlRoot;LPWSTR pszDisplayName; // Return display…

技术新贵:RPA与NLP技术的结合与应用

什么是 RPA&#xff08;Robotic Process Automation&#xff09;&#xff1f;机器人流程自动化&#xff08;RPA&#xff09;是一种自动化工具&#xff0c;用于创建软件机器人的虚拟劳动力&#xff0c;从而优化和降低企业中端到端业务流程的成本。RPA 可以翻译成机器人流程自动化…

API Sanity Checker在Ubuntu中的使用

API Sanity Checker是一个自动生成单元测试用例的工具&#xff0c;可用于链接测试。它可用于三大桌面平台&#xff0c;下面简单介绍它在Linux下的使用步骤&#xff1a;1. 从http://ispras.linuxbase.org/index.php/API_Sanity_Autotest 下载最新的api-sanity-checker-1.98…

手动脱壳—dump与重建输入表(转)

文章中用到的demo下载地址&#xff1a; http://download.csdn.net/detail/ccnyou/4540254 附件中包含demo以及文章word原稿 用到工具: Ollydbg LordPE ImportREC 这些工具请自行下载准备 Dump原理这里也不多做描述&#xff0c;想要了解google it&#xff01;常见的dump软件有Lo…

如何用RNN生成莎士比亚风格的句子?(文末赠书)

作者 | 李理&#xff0c;环信人工智能研发中心vp&#xff0c;十多年自然语言处理和人工智能研发经验。主持研发过多款智能硬件的问答和对话系统&#xff0c;负责环信中文语义分析开放平台和环信智能机器人的设计与研发。来源 | 《深度学习理论与实战&#xff1a;基础篇》基本概…

图像相似度计算之哈希值方法OpenCV实现

感知哈希算法(perceptual hash algorithm)&#xff0c;它的作用是对每张图像生成一个“指纹”(fingerprint)字符串&#xff0c;然后比较不同图像的指纹。结果越接近&#xff0c;就说明图像越相似。 实现步骤&#xff1a; 1. 缩小尺寸&#xff1a;将图像缩小到8*8的尺寸&am…

七夕大礼包:26个AI学习资源送给你!

整理 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;免费的在线学习课程一直是大多数人学习 AI 知识和技能的方式之一。今天&#xff0c;基于 Github 上一位小姐姐 Chip Huyen 分享的 10 门机器学习课程&#xff0c;AI科技大本营将这份收藏大礼包进…

HTML Inspector – 帮助你编写高质量的 HTML 代码

HTML Inspector 是一款代码质量检测工具&#xff0c;帮助你编写更优秀的 HTML 代码。HTML Inspector 使用 JavaScript 编写&#xff0c;运行在浏览器中&#xff0c;是最好的 HTML 代码检测工具。 您可能感兴趣的相关文章Metronic – 赞&#xff01;Bootstrap 响应式后台管理模板…

Git简介以及与SVN的区别

Git是由著名Linux内核(Kernel)开发者Linus Torvalds为了便利维护Linux而开发的。 Git是一个分布式的版本控制系统。作为一个分布式的版本控制系统&#xff0c;在Git中并不存在主库这样的概念&#xff0c;每一份复制出的库都可以独立使用&#xff0c;任何两个库之间的不一致之处…

java集合中某一个元素出现的次数

int count Collections.frequency(list, key); java的内置方法转载于:https://www.cnblogs.com/wysAC666/p/10252676.html

加密解密-DES算法和RSA算法

昨天忽然对加密解密有了兴趣&#xff0c;今天上班查找了一些资料&#xff0c;现在就整理一下吧&#xff1a;&#xff09; 一.DES算法 这种算法如图所示&#xff0c;这里将描述它的每一个步骤。这个算法进行了16次迭代&#xff08;圈&#xff09;&#xff0c;把各块明文交织起来…

开始Dojo之路

开始Dojo之路waiting……转载于:https://blog.51cto.com/frabbit2013/1242108

图像相似度计算之直方图方法OpenCV实现

操作步骤&#xff1a; 1. 载入图像(灰度图或者彩色图)&#xff0c;并使其大小一致&#xff1b; 2. 若为彩色图&#xff0c;增进行颜色空间变换&#xff0c;从RGB转换到HSV&#xff0c;若为灰度图则无需变换&#xff1b; 3. 若为灰度图&#xff0c;直接计算其直方…

黄皓之后,计算机科学上帝Don Knuth仅用一页纸证明布尔函数敏感度猜想

作者 | Freesia编辑 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;近日&#xff0c;美国艾默里大学计算机与数学科学系教授黄皓&#xff08;Hao Huang&#xff09;用一篇短短 6 页的论文证明了布尔函数&#xff0c;引发了计算机和数学领域社…

数位DP 不断学习中。。。。

1&#xff0c; HDU 2089 不要62 :http://acm.hdu.edu.cn/showproblem.php?pid2089 题意&#xff1a;不能出现4&#xff0c;或者相邻的62&#xff0c; dp[i][0],表示不存在不吉利数字 dp[i][1],表示不存在不吉利数字&#xff0c;且最高位为2 dp[i][2],表示存在不吉利数字 #i…

linux 性能 管理 与 优化

一、影响Linux服务器性能的因素操作系统级&#xff1a;CPU、内存、磁盘I/O带宽、网络I/O带宽程序应用级二、系统性能评估影响性能因素 评判标准 好 坏 糟糕 CPU user% sys%< 70% user% sys% 85% user% sys% >90% 内存 Swap In&#xff08;si&…

对称加密算法之DES介绍

DES(Data Encryption Standard)是分组对称密码算法。DES采用了64位的分组长度和56位的密钥长度&#xff0c;它将64位的输入经过一系列变换得到64位的输出。解密则使用了相同的步骤和相同的密钥。DES的密钥长度为64位&#xff0c;由于第n*8(n1,2,…8)是校验位&#xff0c;因此实…

200行代码解读TDEngine背后的定时器

作者 | beyondma来源 | CSDN博客导读&#xff1a;最近几周&#xff0c;本文作者几篇有关陶建辉老师最新的创业项目-TdEngine代码解读文章出人意料地引起了巨大的反响&#xff0c;原以为C语言已经是昨日黄花&#xff0c;不过从读者的留言来看&#xff0c;C语言还是老当益壮&…

fastJson结合Nutz.Mapl的进阶应用

为什么80%的码农都做不了架构师&#xff1f;>>> 今天要做一堆数据的序列化, 反序列化, 序列化没问题, 反序列化却遇到了点小意外, 这一堆数据不是一个类!!!!!!当然可以通过类内部的一个类型对象来判断, 但是fastJson并没有这个功能, 只能自己一个一个的遍历一个一个…

OpenCV实现遍历文件夹下所有文件

OpenCV中有实现遍历文件夹下所有文件的类Directory&#xff0c;它里面包括3个成员函数&#xff1a;(1)、GetListFiles&#xff1a;遍历指定文件夹下的所有文件&#xff0c;不包括指定文件夹内的文件夹&#xff1b;(2)、GetListFolders&#xff1a;遍历指定文件夹下的所有文件夹…

阿里、京东、快手、华为......他们是如何构建一个个推荐系统“帝国”的?

推荐系统在人们的日常生活中随处可见&#xff0c;成为我们生命中不可或缺的一部分。作为当今应用最为广泛和成熟的 AI 技术之一&#xff0c;它是信息生产者、传播者与用户之间的桥梁&#xff0c;可以让信息最精准、最高效地到达需求不一的用户面前。每天打开手机或电脑端的大部…

前端基础_ES6

声明 三大关键字声明变量&#xff1a;var &#xff08;ES5语法&#xff09; let &#xff08;ES6语法&#xff09;声明常量&#xff1a;const (ES6语法) var 声明变量特性1、支持 函数作用域2、支持 JS预解析 &#xff08;所谓变量提升&#xff09;3、支持 重复声明 &#xff…

5大典型模型测试单机训练速度超对标框架,飞桨如何做到?

导读&#xff1a;飞桨&#xff08;PaddlePaddle&#xff09;致力于让深度学习技术的创新与应用更简单。在单机训练速度方面&#xff0c;通过高并行、低开销的异步执行策略和高效率的核心算子&#xff0c;优化静态图训练性能&#xff0c;在Paddle Fluid v1.5.0的基准测试中&…

windowsXP用户被禁用导致不能网站登录

1、查看系统事件&#xff0c;发现弹出如下的错误 2、根据上面的错误&#xff0c;我们很容易就可以判断是禁用了账户引起的 2.1后面进入计算机管理&#xff0c;再进入用户管理 2.2双击点开Internet来宾用于&#xff0c;发现此用户已经停用了。 2.3双击点开与IIS访问有关用户&…