Windows(x64)编译FFMPEG-2.0.1
公司需要做网络视频传输的相关项目,初步选定用这么几个东西FFMPEG,ORTP,Live555这么几个东东。研究了也有一个月了,把一些心得写出来,这篇文章主要介绍FFMPEG在windows上的编译。
1 下载 MinGW 和 MSYS
MinGW(Minimalist GNU on Windows):一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时库。
到:http://sourceforge.net/projects/mingw/ 去下载即可
A 点击“DownLoad mingw-get-inst-...exe”
B 切换到页面:download? Check your browser's security bar, or try a direct link, or try another mirror.
C 点击“direct link”下载类似:mingw-get-inst-20120426.exe 的文件
提示:msys此处就不用再下载了,mingw-get-inst-20120426.exe 中已经包含了msys1.0,后面安装的时候就可以看到该选项。
2 下载 yasm(汇编编译器)
ffmpeg编译的时候里面的汇编代码需要yasm.exe
去官网:http://yasm.tortall.net/Download.html 下载
文件名类似为:yasm-1.2.0-win64.exe(如果是64位系统下载32位版本yasm-1.2.0-win32.exe)
ffmpeg可以到 http://www.ffmpeg.org/releases/ 下载
选择的一个最新版本下载即可,如:ffmpeg-2.0.1.tar.gz
文件名类似为:ffmpeg-2.0.1.tar.gz
当然你也使用网上介绍的使用SVN直接下载源代码的方法。
svn://svn.mplayerhq.hu/ffmpeg/trunk
4 下载 mp3lame(支持mp3,可选项)
为了让编译出来的ffmpeg支持对mp3格式的编解码,您需要先下载lame。
到:http://sourceforge.net/projects/lame/files/ 下载
文件名类似为:lame-3.99.5.tar.gz 的包。
5 下载 x264(支持x264,可选项)
为了让编译出来的ffmpeg支持对x264格式的编解码,您需要先下载x264。
到:http://www.videolan.org/developers/x264.html下载
文件名类似为:last_x264.tar.bz2 的包。
6 下载 Xvid(支持Xvid,可选项)
为了让编译出来的ffmpeg支持对Xvid格式的编解码,您需要先下载Xvid。
到:http://www.xvid.org/ 下载
文件名类似为:xvidcore-1.3.2.tar.gz 的包。
7 下载 faac(支持faac,可选项)
到:http://www.audiocoding.com/downloads.html 下载:Version 1.28 bootstrapped
TAR.GZ Package
文件名类似为:faac-1.28.tar.gz 的包。
8 下载 aacenc(支持aac,可选项)
到:http://sourceforge.net/projects/opencore-amr/files/ 下载:vo-aacenc
文件名类似为:vo-aacenc-0.1.2.tar.gz 的包。
9 下载 opencore-amr与vo-amrwbenc (支持3gp,可选项)
到:http://sourceforge.net/projects/opencore-amr/files/ 下载:opencore-amr
与 vo-amrwbenc
文件名类似为:opencore-amr-0.1.3.tar.gz 与vo-amrwbenc-0.1.2.tar.gz 的包。
10 下载 SDL(支持SDL,可选项)
SDL下载可以到:http://www.libsdl.org/download-1.2.php
在Source Code栏选择类似:SDL-1.2.15.tar.gz - GPG signed 进行下载,
文件名类似为:SDL-1.2.15.tar.gz,此文件需要编译才能生成lib库。
四 编译步骤
1 安装 mingw 和 msys
执行下载文件:mingw-get-inst-20120426.exe,
在第3步选择“Download latest repository catalogues”
选择安装路径:D:\Files\MinGW
在“Select Components”步骤中选择:
√ C Compiler (默认且一定选择)
√ C++ Compiler
√ MSYS Basic System(选择此项将会安装msys,msys则不需要另外安装)
√ MinGW Developer ToolKit
等待安装完成!(需要等待一定的时间,因为安装过程需要下载文件,可想而知,网速越快,安装越快)
安装完成后,在D:\Files\MinGW目录下可以看到 msys 文件夹,msys也已经安装。
2 配置 msys.bat 批处理文件
为了方便VS2010调用ffmpeg的动态库,可以通过配置让ffmpeg编译时产生windows下调用dll对应的lib,当然,如果你没有这个需要,那么就可以省略以下处理,直接进入步骤3。
进入:D:\Files\MinGW\msys\1.0\文件夹,使用UltraEdit打开msys.bat文件,在文件的最最前面加入如下一行:
添加后效果如下:
call "D:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
@echo off
rem Copyright (C): 2001, 2002, 2003, 2004, 2005 Earnie Boyd
rem mailto:earnie@users.sf.net
rem This file is part of Minimal SYStem
rem http://www.mingw.org/msys.shtml
rem
rem File: msys.bat
rem Revision: 2.4
rem Revision Date: December 8th, 2005
rem ember to set the "Start in:" field of the shortcut.
rem A value similar to C:\msys\1.0\bin is what the "Start in:" field needs
rem to represent.
其中“D:\Files\Microsoft Visual Studio 10.0”为你机器上安装VS2010的目录安装在了D盘。文件修改后保存即可。
使用UltraEdit修改D:\Files\MinGW\msys\1.0\etc目下的fstab文件,修改其内容为:D:/Files/MinGW,也即为MinGW的安装路径。
为了减少配置环境变量的麻烦,本处直接把yasm-1.1.0-win64.exe 文件名修改成:yasm.exe,并放到目录:D:\Files\MinGW\msys\1.0\bin
lame-3.99.5.tar.gz 接压到:D:\Library\ffmpeg\
目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到lame目录:D:\ffmpeg
\lame-3.99.5
$ cd /d
$ cd Library/ffmpeg/lame-3.99.5
$./configure --disable-shared (首选)
$ make
$ make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下
6 编译 x264(可选项)
last_x264.tar.bz2 接压到:D:\Library\ffmpeg\
目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到x264目录:D:
\Library\ffmpeg\x264-snapshot-20130630-2245
$ cd /d
$ cd Library/ffmpeg/x264-snapshot-20130630-2245
$./configure --enable-shared --disable-asm
-std=gnu99 -fomit-frame-pointer -fno-tree-vectorize
-fno-zero-initialized-in-bss
-std=gnu99 -fomit-frame-pointer -fno-tree-vectorize
-fno-zero-initialized-in-bss -march=i686
$ make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下
7 编译 Xvid(可选项)
xvidcore-1.3.2.tar.gz 接压到:D:\Files\Library\ffmpeg\
目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到xvidcore目录:D:
\Files\Library\ffmpeg\xvidcore\build\generic
$ cd Files/Library/ffmpeg/xvidcore/build/generic
再执行以下命令:
$./configure --prefix=d:/Files/MinGW/msys/1.0/local
$ make
$ make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下。
需要注意的就是:此处编译加上了路径
如果make时出现:cc1.exe: error: unrecognized command line option
'-mno-cygwin' 错误,请在./configure后make之前修改xvidcore\build\generic里的
platform.inc文件,直接删除里面的“-mno-cygwin”。
8 编译faac(可选项)
faac-1.28.tar.gz 接压到:D:\Files\Library\ffmpeg\
目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到
faac目 录:D:\Files\Library\ffmpeg\faac-1.28
$ cd Files\Library\ffmpeg\faac-1.28
$./bootstrap
$./configure --disable-static --enable-shared
$ make
$ make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下
vo-aacenc-0.1.2.tar.gz 接压到:D:\Files\Library\ffmpeg\
目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到
vo- aacenc目录:D:\Files\Library\ffmpeg\vo-aacenc-0.1.2
$ cd Files\Library\ffmpeg\vo-aacenc-0.1.2
$ cd vo-aacenc-0.1.2
再执行以下命令:
$./configure --disable-shared
$ make
$ make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下
opencore-amr-0.1.3.tar.gz 接压到:D:\Files\Library\ffmpeg\ 目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。
切换到opencore-amr目录:D:\Files\Library\ffmpeg\opencore-amr-0.1.3
$ cd /d
$ cd Files\Library\ffmpeg\opencore-amr-0.1.3
再执行以下命令:
$./configure --disable-shared
$ make CC=gcc
$ make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下
vo-amrwbenc-0.1.2.tar.gz 接压到: D:\Files\Library\ffmpeg\ 目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,已经启动的话就不用再重新启动了。切换到vo-amrwbenc目录:D:\Files\Library\vo-amrwbenc-0.1.2
$ cd Files\Library\vo-amrwbenc-0.1.2
再执行以下命令:
$./configure --disable-shared
$ make CC=gcc
$ make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下
SDL-1.2.15.tar.tar 解压到:D:\Files\Library\ffmpeg\ 目录下,
双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到SDL目录:D:\ffmpeg\SDL-
1.2.15,切换方法如下:
$ cd /d
$ cd Files\Library\ffmpeg
$ cd SDL-1.2.15
再执行以下命令:
./configure
make
make install
编译结果在:D:\Files\MinGW\msys\1.0\local 目录下
把 prefix=/usr/local 该成: prefix=d:/Files/MinGW
其中:D:/Files/MinGW 为 mingw的安装路径,请根据你的安装进行修改。为了编译时msys能识别sdl并开启 SDL
support yes
进行编译,请把D:\Files\MinGW\msys\1.0\local编译结果bin、include和lib中有关sdl的拷贝一份到D:
\Files\MinGW\的对 应目录中。
12 编译 ffmpeg
ffmpeg-2.0.1.tar.gz 解压到:D:\Files\Library\ffmpeg\ 目录下,双击“D:\Files\MinGW\msys\1.0\msys.bat”,启动“MinGW32”,切换到ffmpeg目录:D:\Files\Library\ffmpeg\ffmpeg-2.0.1,切换方法如下:
$ cd Files\Library\ffmpeg\ffmpeg-2.0.1
再执行以下命令:
$ ./configure --enable-shared --disable-static --enable-ffplay
--enable-nonfree --enable-memalign-hack
--enable-libmp3lame
--enable-gpl
--enable-libxvid
--enable-libvo-aacenc
--enable-version3
--enable-libopencore-amrwb
--extra-cflags=-Id:/Files/MinGW/msys/1.0/local/include
--extra-ldflags=-Ld:/Files/MinGW/msys/1.0/local/lib
$ make
需要等待很长一段时间,等待编译结束。
为了汇总编译结果,请继续执行以下命令:
$ make install
等待完成,在d:/Files/Library/ffmpeg/ffmpeg-2.0.1中将会生成 bin、include、lib等文件夹,其中包含了ffmpeg.exe、ffplay.exe、ffprobe.exe、dll、lib和头文件等。
确实以下dll:
#ifndef _INTTYPES_H_ALL_
#define _INTTYPES_H_ALL_ // _INTTYPES_H_SYS_: 编译器是否提供了<inttypes.h>
#undef _INTTYPES_H_SYS_
#if defined(__GNUC__) // GCC.
#define _INTTYPES_H_SYS_
#elif defined(_MSC_VER) // MSVC. VC2010仍不支持.
#elif defined(__BORLANDC__) // BCB. BCB6仍不支持.
#else
#define _INTTYPES_H_SYS_ // 假设其他编译器支持C99.
#endif // _INTTYPES_H_SYS_ #ifdef _INTTYPES_H_SYS_
// 使用编译器提供的<inttypes.h>
#include <inttypes.h>
#else
// 采用自定义的inttypes.h. 参考了 msinttypes: http://code.google.com/p/msinttypes/ #ifndef _MSC_INTTYPES_H_ // [
#define _MSC_INTTYPES_H_ #include "stdint.h" // 7.8 Format conversion of integer types typedef struct {
intmax_t quot;
intmax_t rem;
} imaxdiv_t; // 7.8.1 Macros for format specifiers #if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 // The fprintf macros for signed integers are:
#define PRId8 "d"
#define PRIi8 "i"
#define PRIdLEAST8 "d"
#define PRIiLEAST8 "i"
#define PRIdFAST8 "d"
#define PRIiFAST8 "i" #define PRId16 "hd"
#define PRIi16 "hi"
#define PRIdLEAST16 "hd"
#define PRIiLEAST16 "hi"
#define PRIdFAST16 "hd"
#define PRIiFAST16 "hi" #if defined(_MSC_VER) && _MSC_VER<=1200 // VC6
#define PRId32 "d"
#define PRIi32 "i"
#define PRIdLEAST32 "d"
#define PRIiLEAST32 "i"
#define PRIdFAST32 "d"
#define PRIiFAST32 "i"
#else
#define PRId32 "I32d"
#define PRIi32 "I32i"
#define PRIdLEAST32 "I32d"
#define PRIiLEAST32 "I32i"
#define PRIdFAST32 "I32d"
#define PRIiFAST32 "I32i"
#endif #define PRId64 "I64d"
#define PRIi64 "I64i"
#define PRIdLEAST64 "I64d"
#define PRIiLEAST64 "I64i"
#define PRIdFAST64 "I64d"
#define PRIiFAST64 "I64i" #define PRIdMAX "I64d"
#define PRIiMAX "I64i" #define PRIdPTR "Id"
#define PRIiPTR "Ii" // The fprintf macros for unsigned integers are:
#define PRIo8 "o"
#define PRIu8 "u"
#define PRIx8 "x"
#define PRIX8 "X"
#define PRIoLEAST8 "o"
#define PRIuLEAST8 "u"
#define PRIxLEAST8 "x"
#define PRIXLEAST8 "X"
#define PRIoFAST8 "o"
#define PRIuFAST8 "u"
#define PRIxFAST8 "x"
#define PRIXFAST8 "X" #define PRIo16 "ho"
#define PRIu16 "hu"
#define PRIx16 "hx"
#define PRIX16 "hX"
#define PRIoLEAST16 "ho"
#define PRIuLEAST16 "hu"
#define PRIxLEAST16 "hx"
#define PRIXLEAST16 "hX"
#define PRIoFAST16 "ho"
#define PRIuFAST16 "hu"
#define PRIxFAST16 "hx"
#define PRIXFAST16 "hX" #if defined(_MSC_VER) && _MSC_VER<=1200 // VC6
#define PRIo32 "o"
#define PRIu32 "u"
#define PRIx32 "x"
#define PRIX32 "X"
#define PRIoLEAST32 "o"
#define PRIuLEAST32 "u"
#define PRIxLEAST32 "x"
#define PRIXLEAST32 "X"
#define PRIoFAST32 "o"
#define PRIuFAST32 "u"
#define PRIxFAST32 "x"
#define PRIXFAST32 "X"
#else
#define PRIo32 "I32o"
#define PRIu32 "I32u"
#define PRIx32 "I32x"
#define PRIX32 "I32X"
#define PRIoLEAST32 "I32o"
#define PRIuLEAST32 "I32u"
#define PRIxLEAST32 "I32x"
#define PRIXLEAST32 "I32X"
#define PRIoFAST32 "I32o"
#define PRIuFAST32 "I32u"
#define PRIxFAST32 "I32x"
#define PRIXFAST32 "I32X"
#endif #define PRIo64 "I64o"
#define PRIu64 "I64u"
#define PRIx64 "I64x"
#define PRIX64 "I64X"
#define PRIoLEAST64 "I64o"
#define PRIuLEAST64 "I64u"
#define PRIxLEAST64 "I64x"
#define PRIXLEAST64 "I64X"
#define PRIoFAST64 "I64o"
#define PRIuFAST64 "I64u"
#define PRIxFAST64 "I64x"
#define PRIXFAST64 "I64X" #define PRIoMAX "I64o"
#define PRIuMAX "I64u"
#define PRIxMAX "I64x"
#define PRIXMAX "I64X" #define PRIoPTR "Io"
#define PRIuPTR "Iu"
#define PRIxPTR "Ix"
#define PRIXPTR "IX" // The fscanf macros for signed integers are:
#define SCNd8 "d"
#define SCNi8 "i"
#define SCNdLEAST8 "d"
#define SCNiLEAST8 "i"
#define SCNdFAST8 "d"
#define SCNiFAST8 "i" #define SCNd16 "hd"
#define SCNi16 "hi"
#define SCNdLEAST16 "hd"
#define SCNiLEAST16 "hi"
#define SCNdFAST16 "hd"
#define SCNiFAST16 "hi" #define SCNd32 "ld"
#define SCNi32 "li"
#define SCNdLEAST32 "ld"
#define SCNiLEAST32 "li"
#define SCNdFAST32 "ld"
#define SCNiFAST32 "li" #define SCNd64 "I64d"
#define SCNi64 "I64i"
#define SCNdLEAST64 "I64d"
#define SCNiLEAST64 "I64i"
#define SCNdFAST64 "I64d"
#define SCNiFAST64 "I64i" #define SCNdMAX "I64d"
#define SCNiMAX "I64i" #ifdef _WIN64 // [
# define SCNdPTR "I64d"
# define SCNiPTR "I64i"
#else // _WIN64 ][
# define SCNdPTR "ld"
# define SCNiPTR "li"
#endif // _WIN64 ] // The fscanf macros for unsigned integers are:
#define SCNo8 "o"
#define SCNu8 "u"
#define SCNx8 "x"
#define SCNX8 "X"
#define SCNoLEAST8 "o"
#define SCNuLEAST8 "u"
#define SCNxLEAST8 "x"
#define SCNXLEAST8 "X"
#define SCNoFAST8 "o"
#define SCNuFAST8 "u"
#define SCNxFAST8 "x"
#define SCNXFAST8 "X" #define SCNo16 "ho"
#define SCNu16 "hu"
#define SCNx16 "hx"
#define SCNX16 "hX"
#define SCNoLEAST16 "ho"
#define SCNuLEAST16 "hu"
#define SCNxLEAST16 "hx"
#define SCNXLEAST16 "hX"
#define SCNoFAST16 "ho"
#define SCNuFAST16 "hu"
#define SCNxFAST16 "hx"
#define SCNXFAST16 "hX" #define SCNo32 "lo"
#define SCNu32 "lu"
#define SCNx32 "lx"
#define SCNX32 "lX"
#define SCNoLEAST32 "lo"
#define SCNuLEAST32 "lu"
#define SCNxLEAST32 "lx"
#define SCNXLEAST32 "lX"
#define SCNoFAST32 "lo"
#define SCNuFAST32 "lu"
#define SCNxFAST32 "lx"
#define SCNXFAST32 "lX" #define SCNo64 "I64o"
#define SCNu64 "I64u"
#define SCNx64 "I64x"
#define SCNX64 "I64X"
#define SCNoLEAST64 "I64o"
#define SCNuLEAST64 "I64u"
#define SCNxLEAST64 "I64x"
#define SCNXLEAST64 "I64X"
#define SCNoFAST64 "I64o"
#define SCNuFAST64 "I64u"
#define SCNxFAST64 "I64x"
#define SCNXFAST64 "I64X" #define SCNoMAX "I64o"
#define SCNuMAX "I64u"
#define SCNxMAX "I64x"
#define SCNXMAX "I64X" #ifdef _WIN64 // [
# define SCNoPTR "I64o"
# define SCNuPTR "I64u"
# define SCNxPTR "I64x"
# define SCNXPTR "I64X"
#else // _WIN64 ][
# define SCNoPTR "lo"
# define SCNuPTR "lu"
# define SCNxPTR "lx"
# define SCNXPTR "lX"
#endif // _WIN64 ] #endif // __STDC_FORMAT_MACROS ] // 7.8.2 Functions for greatest-width integer types // 7.8.2.1 The imaxabs function
#define imaxabs _abs64 // 7.8.2.2 The imaxdiv function #ifdef _MSC_VER
// This is modified version of div() function from Microsoft's div.c found
// in %MSVC.NET%\crt\src\div.c
#ifdef STATIC_IMAXDIV // [
static
#else // STATIC_IMAXDIV ][
_inline
#endif // STATIC_IMAXDIV ]
imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
{
imaxdiv_t result; result.quot = numer / denom;
result.rem = numer % denom; if (numer < && result.rem > ) {
// did division wrong; must fix up
++result.quot;
result.rem -= denom;
} return result;
}
#endif // #ifdef _MSC_VER // 7.8.2.3 The strtoimax and strtoumax functions
#define strtoimax _strtoi64
#define strtoumax _strtoui64 // 7.8.2.4 The wcstoimax and wcstoumax functions
#define wcstoimax _wcstoi64
#define wcstoumax _wcstoui64 #endif // _MSC_INTTYPES_H_ ] #endif // #ifdef _INTTYPES_H_SYS_ #endif // #ifndef _INTTYPES_H_ALL_
inittypes.h
欢迎转载,转载请注明出处。。。。。
Windows(x64)编译FFMPEG-2.0.1的更多相关文章
- 一步步实现windows版ijkplayer系列文章之一——Windows10平台编译ffmpeg 4.0.2,生成ffplay
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 在Windows下编译FFmpeg详细说明
MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...
- ffmpeg windows下编译ffmpeg
windows下编译ffmpeg 今天由于工作需求需重新编译ffmpeg,百度,goole了一大堆,看眼花缭乱的,但几乎都是三种方案,大部分都是直接转发,一字不漏,错误的缺文件的还是照转,可是问题都大 ...
- 在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
- windows下编译ffmpeg
windows 编译ffmpeg 搞过很多次,每次总是磕磕碰碰,从头到尾不能一直顺利,浪费一些时间.终究起原因,都是当时记得,过段时间就忘了.好记性不如烂笔头,大好周末晚上,闲暇无事,记录最近一次编译 ...
- [转]在Windows下编译ffmpeg完全手册
本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...
- 在windows下编译ffmpeg
编译ffmpeg,我在网上找了很多相关的方法,但最后都没编译成功. 所以下面就记录下自己的编译方法吧,留着以后编译的时候做参考. 1.首先,下载编译工具MinGW+Msys,搭建编译环境.工具下载地址 ...
- 开源项目:windows下使用MinGW+msys编译ffmpeg
本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处. FFmpeg是在Linux平台下开发的,但 ...
- windows 下使用 MinGW + msys 编译 ffmpeg
本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处. FFmpeg是在Linux平台下开发的,但 ...
- Windows下编译安装 FFmpeg
在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...
随机推荐
- java并发编程:线程安全管理类--原子操作类--AtomicReferenceArray<E>
1.类 AtomicReferenceArray<E> public class AtomicReferenceArray<E>extends Objectimplements ...
- 通过ReRes让chrome拥有路径映射的autoResponse功能。
前端开发过程中,经常会有需要对远程环境调试的需求.比如,修改线上bug,开发环境不在本地等等.我们需要把远程css文件或者js映射到本地的文件上,通过修改本地文件进行调试和开发.通常我们可以通过以下方 ...
- 小程序配置单个页面导航栏的属性(微信小程序交流群:604788754)
配置单个页面导航栏的属性: 就在所要配置页面相对应的json文件中写入以下想要设置的属性: { "navigationBarBackgroundColor": "#fff ...
- PHP:第一章——PHP中的关键字
<?php //PHP关键词 /* and //php中的逻辑与运算符.(和) or //php中的逻辑或运算符.(或) xor //php中的逻辑异或.(异或) __FILE__ //php中 ...
- Struts2的手工自定义验证--完整实例代码
ActionSupport类实现了Validateable.ValidationAware接口, 其中Validateable接口就是验证器接口,该接口有一个validate()方法, validat ...
- php截取中文字符串 GB2312 utf-8
UTF-8截取中文字符串 function Cn_Substr($string, $length) { preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x ...
- ASIHTTPRequest缓存策略download cache
本文为大家介绍了iOS开发ASIHTTPRequest使用download cache的内容,其中包括cache策略,存储策略,其他cache相关的特性,编写自己的cache等等内容. 从1.8版本开 ...
- python两个子线程通过queue通信
SocketServer端代码 #!/usr/bin/env python import threading import SocketServer import time import queue ...
- SWIFT Optional Value
SWIFT中有一个类型定义叫可选值,在变量类型后面加一个?号即可定义一个类型为Optional Value的变量,当在使用变量时要用到强制解包!. 如在页面上有一个可选输入年龄的框,在接受数据的时间就 ...
- c语言基础:数据类型 分类: iOS学习 c语言基础 2015-06-10 21:43 9人阅读 评论(0) 收藏
C语言基本数据类型大体上分为: 整型 和 浮点型 字节: 计算机中最小的储存单位 1 Byte = 8 bit 整型: int 4 ...