FFmpeg学习之八(FFmpeg源码编译)

  • Mac下 FFmpeg源码编译
    • 安装
      • 1. 使用终端安装FFmpeg
      • 2. 手动编译
        • 2.1 编译环境 - Xcode
        • 2.2 安装依赖库
        • 2.3 安装Freetype
        • 2.4 编译
        • 2.5 手动编译步骤
        • 2.6 安装路径配置
        • 2.7 环境变量配置
      • 3. FFmpeg相关参数简介
  • window下 FFmpeg源码编译
    • 1. 编译环境配置
      • 1.1 安装WinGW编译环境
      • 1.2 安装[yasm](http://yasm.tortall.net/Download.html)
      • 1.3 安装pkg-config
      • 1.4 下载安装[SDL](https://www.libsdl.org/)
      • 1.5
    • 2. 编译FFmpeg
  • linux下 FFmpeg源码编译
  • IOS下 FFmpeg源码编译
    • IOS 编码简介
    • IOS 编译FFmpeg
      • 1. 下载 gas-preprocessor
      • 2. 安装 yasm
      • 3. 下载 x264-iOS编译脚本及源码
      • 4. 下载FFmpeg-iOS编译脚本及源码
      • 5. Xcode编译
  • Android 下 FFmpeg源码编译

Mac下 FFmpeg源码编译

安装

可以通过如下三种方式安装ffmpeg

  1. 终端安装 (借助homebrew): 此方式ffmpeg会保持自动更新.
  2. 下载ffmpeg静态库: 即不用手动编译,我们只需要直接运行下载得到的二进制文件即可.静态生成的一个缺点是必须手动执行更新。此外, 它们可能不包含所需的所有编码器或筛选器。
  3. 手动编译: 下载源码, 然后使用所需的标志(可以指定开启需要的功能)运行./configure, 最后使用make或make install。但是, 必须手动设置配置选项, 并且您需要自己安装第三方库。

如何选择

如果仅仅是想使用命令行的ffmepg, 建议用第一种方式或第二种方式.
如果需要在Mac OS项目中使用ffmpeg, 以及修改一些ffmpeg中的源码以适应项目,使用第三种方式.

1. 使用终端安装FFmpeg

  • 安装Homebrew

Homebrew是命令行中的软件包安装器.绝大多数知名软件包或插件都可以用它来安装. 如果你还没有安装,直接用下面的命令可以安装

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 安装FFmpeg
  1. 通用版本安装,只需命令行输入:brew install ffmpeg
  2. 最新版本安装, 并提供最少的配置 (和库依赖关系) 选项,命令行输入:brew install ffmpeg --HEAD
  3. 扩展安装,可以自定义安装公式,如下,可根据自己需求自行扩展,可能会失败,因为需要一些依赖第三方库:
brew install ffmpeg --with-fdk-aac --with-tools --with-ffplay --with-freetype --with-libass --with-libvorbis --with-opus --with-libvpx --with-x265
  • 安装第三方库中的ffmpeg
    v 2.0版本之后,Homebrew不再为其核心公式提供选项。想要使用其他库 (包括非免费库) 构建 ffmpeg 的用户需要使用来自第三方存储库的ffmpeg。这些库不是由Homebrew维护的。
brew tap varenc/ffmpeg
brew install varenc/ffmpeg/ffmpeg
  • 更新
  1. 通用版本更新,只需终端输入:brew update && brew upgrade ffmpeg
  2. 如最新版本,终端输入:brew upgrade --fetch-HEAD ffmpeg
  3. 如果你已经使用brew install ffmpeg安装了ffmpeg,可以使用 brew uninstall ffmpeg 卸载

2. 手动编译

2.1 编译环境 - Xcode

手动编译Mac上必须安装Xcode,然后安装命令行工具

  • 界面安装: Preferences > Downloads > Components
  • 命令行安装: xcode-select --install

2.2 安装依赖库

  1. 自动安装依赖库,只需命令行输入:
$ brew install automake fdk-aac git lame libass libtool libvorbis libvpx \
opus sdl shtool texi2html theora wget x264 x265 xvid nasm
  1. 手动安装依赖库
    FFmpeg的编译依赖于Pkg-config,而它又依赖于GLib,而GLib又依赖于gettext,所以必须先安装并编译相关依赖。
  • Pkg-config & GLib & gettext
  1. gettext: 在库中编辑文件stpncpy.c,并且在#ifndef weak_alias之前添加#undef stpncpy.
 LIBFFI_CFLAGS=-I/usr/include/ffi LIBFFI_LIBS=-lffi ./configure;make && sudo make install
  1. glib: Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性。

  2. Pkg-config : 维护了一个保存各个代码库的路径的数据库。当然这个”数据库” 非常的简单,其实就是一个特殊的目录,这个目录中有一系列的以 “.pc” 为后缀的文件。

GLIB_CFLAGS="-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include" GLIB_LIBS="-lglib-2.0 -lgio-2.0" ./configure --with-pc-path="/usr/X11/lib/pkgconfig:/usr/X11/share/pkgconfig:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig"

Mac OS X Lion拥有自己的stpncpy函数它跟gettext重复产生冲突。

  • Nasm
    Nasm是x264所需的汇编程序。最新版本可在nasm.us上获得。
  • 其他附加的库
  1. x264: --enable-gpl --enable-libx264
  2. fdk-aac: --enable-libfdk-aac
  3. libvpx: --enable-libvpx
  4. libvorbis: --enable-libvorbis
  5. libopus:
  6. LAME:--enable-libmp3lame
  7. libass:--enable-libass

2.3 安装Freetype

macOS已经安装了freetype(较老的版本可能需要在安装期间选择X11),但不是在典型的位置

在freetype的./configure文件中加入如下指令:

CFLAGS=`freetype-config --cflags`
LDFLAGS=`freetype-config --libs` PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/opt/X11/lib/pkgconfig

2.4 编译

做完以上所有依赖操作后,就可以链接下载FFmpeg源代码。可以通过Generic compilation guide查阅详细的编译步骤.运行./configure --help,可以了解可用的选项。

  • 下载
$ git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
$ cd ffmpeg
  • 编译
  1. 完整编译:
$ ./configure  --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libass \
--enable-libfdk-aac --enable-libfreetype --enable-libmp3lame \
--enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libopus --enable-libxvid \
--samples=fate-suite/
make
  1. 最简编译:
$ ./configure  && make
  • 安装
sudo make install

2.5 手动编译步骤

  • 配置脚本 (编辑脚本文件./configure)
  • 编译 (make)
  • 安装 (make install)

1>. 配置: 允许创建编译步骤所需的必要文件,并通过源包通常提供的配置脚本完成。在配置期间,可以定义安装前缀和已启用的组件。
2>. 编译: 编译通常包括在配置步骤完成后运行make。在此阶段,将生成所需的库和二进制文件。
3> 安装: 安装将在配置步骤中指定的路径中安装二进制文件和库。请注意,由于您可以使用编译路径中编译的二进制文件,因此不需要执行此步骤。

./configure
make
make install

注意: 编译源目录中的文件,并将库安装在/ usr / local中。第三步可能需要超级用户权限(因此可能需要由sudo make install替换),因为普通用户无法修改/ usr / local。

2.6 安装路径配置

配置步骤通常允许用户指定所谓的安装前缀,并且通常通过配置选项configure --prefix = PREFIX指定,其中PREFIX通常默认为/ usr / local。前缀指定安装所有组件的公共目录。
安装中通常涉及以下目录:

  • PREFIX/bin: 包含生成的二进制文件 (e.g. ffmpeg, ffplay, ffprobe etc. in the case of FFmpeg)
  • PREFIX/include: 包含生成库的头文件 (e.g. libavutil/avstring.h, libavcodec/avcodec.h, libavformat/avformat.h etc. in case of FFmpeg)
  • PREFIX/lib:包含生成的库 (e.g. libavutil, libavcodec, libavformat etc. in the case of FFmpeg)
  • PREFIX/share: 包含各种与系统无关的组件;特别是文档文件和示例

一般建议使用默认路径,但如果数量使用像/ opt / PROJECT /这样的前缀,项目将安装在专用目录中,要从系统中删除,只需删除/ opt / PREFIX路径即可。但是此类安装将需要编辑所有环境变量以指向自定义路径。

2.7 环境变量配置

环境中定义的几个变量会影响您的软件包安装。特别是,根据您的安装前缀,您可能需要更新其中一些变量,以确保系统工具可以找到已安装的组件。可以通过命令env显示环境变量列表。

以下是受影响变量的列表:

  • PATH: 定义变量简化路径,系统查找二进制文件的路径。例如,如果在/ usr / local /中安装软件包,则应更新PATH,使其包含/ usr / local / bin。这可以通过命令export PATH = / usr / local / bin:$ PATH来完成。
  • LD_LIBRARY_PATH: 系统查找库的路径。例如,如果在/ usr / local /中安装软件包,则应更新LD_LIBRARY_PATH,使其包含/ usr / local / lib。这可以通过命令export LD_LIBRARY_PATH = / usr / local / lib:$ LD_LIBRARY_PATH来完成。有时不推荐使用此变量,而是使用ldconfig。
  • CFLAGS: 包含C编译器使用的标志,通常包括预处理指令,如-IPREFIX / include或编译标志。自定义CFLAGS通常由源包构建系统作为源包编译器标志的前缀。或者,许多构建系统允许指定配置选项-extra-cflags。
  • LDFLAGS: 这些是链接器使用的指令,通常包括链接指令,如查找自定义路径中安装的库所需的-LPREFIX / lib。自定义LDFLAGS通常由源包构建系统作为源包链接器标志的前缀。或者,许多构建系统允许指定configure选项-extra-ldflags。
  • PKG_CONFIG_PATH: pkg-config使用的路径,用于检测许多编译系统使用的pkg-config文件,以检测特定库使用的自定义CFLAGS / LDFLAGS。

如果您在非标准路径中安装了软件包,则需要更新这些环境库,以便系统工具能够检测软件包组件。在为依赖于其他已安装的库/标头/工具的包运行配置脚本时,一定要这样做。

3. FFmpeg相关参数简介

  • 常用库
库名 用途
ffmpeg 一个命令行工具,用来对视频文件转换格式,也支持对电视卡即时编码
ffserver 一个HTTP多媒体即时广播流服务器,支持时光平移
ffplay 一个简单的播放器,基于SDL与FFmpeg库
libavcodec 包含全部FFmpeg音频/视频编解码库
libavformat 包含demuxers和muxer库
libavutil 包含一些工具库
libpostproc 对于视频做前处理的库
libavutil 包含一些工具库
libswscale libswscale
  • 主要参数
参数名 意义
-i 设置输入档名。
-f 设置输出格式。
-y 若输出文件已存在时则覆盖文件。
-fs 超过指定的文件大小时则结束转换。
-ss 从指定时间开始转换。
-t 从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
-title 设置标题。
-timestamp 设置时间戳。
-vsync 增减Frame使影音同步。
视频参数名 意义
b:v 设置视频流量,默认为200Kbit/秒。(单位请引用下方注意事项)
r 设置帧率值,默认为25。
s 设置画面的宽与高。
aspect 设置画面的比例。
vn 不处理视频,于仅针对声音做处理时使用。
vcodec( -c:v ) 设置视频视频编解码器,未设置时则使用与输入文件相同之编解码器。
声音参数名 意义
b:a 设置每Channel(最近的SVN版为所有Channel的总合)的流量。(单位请引用下方注意事项)
ar 设置采样率。
ac 设置声音的Channel数。
acodec ( -c:a ) 设置声音编解码器,未设置时与视频相同,使用与输入文件相同之编解码器。
an 不处理声音,于仅针对视频做处理时使用。
vol 设置音量大小,256为标准音量。(要设置成两倍音量时则输入512,依此类推。)
  • 查看 FFmpeg官方文档
  1. 查看h265的数据的基本信息
ffmpeg -i /Users/tomxiang/Desktop/h265/test_tomxiang.h265
  1. 用libx265转mp4.
ffmpeg -i /Users/tomxiang/Desktop/test_tomxiang.h265  -c:v libx265 /Users/tomxiang/xxtest/test265.mp4
  1. ffplay逐帧播放视频与显示视频帧序号
    macOS下使用ffplay,按下s键可单帧播放视频,配合一个显示文字的视频滤镜即可显示当前画面的帧序号,命令示例如下所示:
ffplay -vf "drawtext=fontfile=/Library/Fonts/Arial.ttf:text=%{n}:box=1:x=(w-tw)/2:y=h-(2*lh)" sample.mp4

window下 FFmpeg源码编译

1. 编译环境配置

准备工作,先把下面四个软件下载下来。

1)MinGW-MSYS Bundle

2) SDL 注意:在此环境下2.0.3版本的源码编译会有问题,不推荐。

3)yasm

4)FFmpeg

1.1 安装WinGW编译环境

  1. MinGW(Minimalist GNU for Windows):辅助编译Windows程序的工具链。通过minGW installation manager来安装。

  2. MSYS(Minimal SYStem):是一个小型的GNU环境,包括基本的bash,make等等。它也可以通过minGW installation manager进行安装。

  3. 打开minGW installation manager,按照下图进行勾选:

    点击Installation->Apply Changes 进行安装基本包。

1.2 安装yasm

  1. yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE。因此需要安装这个工具。

  2. 如果没有安装yasm或nasm,在编译的时候会遇到这样的错误“nasm/yasm not found or too old.”

  3. 下载 yasm ,并将可执行行文件重命名为yasm.exe复制到%MINGW_PATH%/bin目录下。其中MINGW_PATH是MINGW的安装目录。

  4. 把yasm源码包解压到F:\Work\ffmpeg-2.4\yasm1.2.0目录。进入yasm目录,分别执行命令:

./configure --prefix=/usr/local/yasm
make
make install
  1. 通过下面命令导入yasm环境变量
export PATH="$PATH:/usr/local/yasm/bin"

1.3 安装pkg-config

pkg-config是一个辅助的配置、链接工具,可以方便的支持gcc自动配置。
建议参考:pkg-config for mingw 安装及配置
注意配置好环境变量,PKG_CONFIG_PATH(pkg-config默认的库依赖项查找目录)。
也可以把pkg-config.exe放到%MINGW_PATH%/bin下。

1.4 下载安装SDL

由于编译ffplay需要SDL,所以需要先安装SDL。

  1. SDL安装方式1:
./configure --prefix=/usr/local/SDL
make
make install

完成SDL的安装。

  • SDL编译完成之后,生成的bin文件、include文件、lib文件存放在C:\msys\1.0\local\SDL目录下。

  • 通过下面命令导入SDL环境变量.

export PATH="$PATH:/usr/local/SDL/bin:/usr/local/SDL/include:/usr/local/SDL/lib"

如果没有设置环境变量,在执行ffmpeg configure时,SDL support项显示为no.(注:mingw默认根目录对应与windows下的C:\msys\1.0\目录,可以通过echo $PATH查看当前的系统路径)

  1. SDL安装方式2:
  • 下载SDL2,解压之后,把include/sdl、lib、bin目录下的文件拷贝到%MINGW_PAH%/msys/1.0的对应目录下。
  • 把lib/pkg-config/sdl2.pcprefix=/opt/local/x86_64-w64-mingw32的prefix的路径修改为%MINGW_PAH%/msys/1.0,还有几处prefix指定为/opt/local/x86_64-w64-mingw32的地方也需要修改一下,可以全局搜索替换一下(没有找到更好的方法)。

说明:

当编译参数加上–enable-sdl时如果没有找到匹配的sdl会报错提示,如果不加这个参数,没有报错提示。
遇到问题可以查看config.log中测试sdl部分的日志,检查是否存在sdl版本或者指定的库的位置有问题。我就遇到了prefix指定的sdl位置不对,导致指定的编译的头文件位置不对导致找不到头文件的问题。

1.5

2. 编译FFmpeg

  1. 把ffmpeg源码(ffmpeg-2.4.tar.bz2)解压到F:\Work\ffmpeg-2.4\ffmpeg-2.4,进入ffmpeg代码目录, 分别执行下面命令:
# 进入FFmpeg源码目录
cd FFmpeg
# 配置编译参数
./configure --prefix=../buildout --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl
# 编译
make
make install
  1. 完成之后检查FFmpeg编译目录下的config.h文件,找到HAVE_SDL、CONFIG_SDL宏,如果都是1,表示SDL配置成功。
  2. 可能存在的问题:
  • 执行make时遇到下面的错误ffbuild/common.mak:174 missing separator. Stop
    解决方法:

运行git config --global core.autocrlf false
然后运行下面的命令删除ffmpeg代码,并重新获取一下即可

  • 运行ffplay.exe的时候提示找不到SDL2.dll
    解决方法:

把下载的sdl中的bin目录下的SDL2.dll拷贝到ffplay.exe所在的目录。

linux下 FFmpeg源码编译

IOS下 FFmpeg源码编译

IOS 编码简介

iOS上编解码分为两种,硬编解码和软编解码,可以参考下表:

类型 工具 硬件支持 后台 思路 备注
硬编解码 VideoToolBox 非CPU或者专用处理器 编码(iOS>=10.0),解码不支持 VideoVTToolBox -
硬编解码 AVAssetWriter 非CPU或者专用处理器 支持编码 需要将视频写入本地文件,然后通过实时监听文件内容的改变,读取文件并处理封包 -
软编解码 FFmpeg CPU 支持 - -

IOS 编译FFmpeg

  • IOS 可以通过如下两种方式安装ffmpeg:
  1. 下载iOS版本ffmpeg静态库: 即不用手动编译,我们只需要下载得到头文件及.a库文件.
  2. 手动编译: 下载源码, 可以在更改一些flag或源码后再编译脚本,较为灵活.

如果仅仅是想简单直接使用ffmeg可以下载一个稳定版本的静态库, 建议用第一种方式.
如果需要在iOS项目中自定义使用ffmpeg, 以及修改一些ffmpeg中的源码以适应项目,使用第二种方式.

  • IOS 编译所需的资源可以从这个百度云下载:IOS编译FFmpeg所需资源下载提取码: 5400
    百度云 链接:https://pan.baidu.com/s/1xeHNgHHGAU1nru35ewjVFA 密码:5400

1. 下载 gas-preprocessor

下载 gas-preprocessor

此文件是编译FFmpeg必备的脚本文件,使用如下命令将其拷贝进bin下

cp -f /xxx/gas-preprocessor.pl /usr/local/bin/

2. 安装 yasm

下载yasm

yasm是一个完全重写的NASM汇编并且支持x86和AMD64指令集.

brew install yasm

3. 下载 x264-iOS编译脚本及源码

下载 x264-iOS编译脚本 及 源码

  1. 下载x264编译脚本解压后如下
  2. 然后下载最新版源码解压后如下
  3. 将源码文件夹改名为x264并放至编译脚本文件夹(x264-ios-master)下

修改后如图:

因为编译脚本中指定文件目录为x264,所以需要改名,也可以改编译脚本
最好手动强制设置下GCC位置,否则可能会报错,然后执行命令:

cd 到你的x264-ios-master文件夹下,然后执行命令:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
./build-x264.sh
  1. 执行完成之后可以看到生成了x264-iOS文件夹
  2. 可能存在的编译报错:
  • No working C compiler found : 新版mac直接编译会报错,原因是gcc一些必要工具找不到.可能是xcode位置换了的原因,因为我们主要使用真机调试,所以我们在编译脚本中只保留arm64即可,如下修改后,可以直接编译通过. 不过像模拟器这样的设置是无法使用x264的,因为我们相当于仅编译了真机所需的库.
ARCHS="arm64 x86_64 i386 armv7 armv7s"
改为如下
ARCHS="arm64"

4. 下载FFmpeg-iOS编译脚本及源码

下载FFmpeg-iOS编译脚本及源码

注意: 在这里可以仅下载FFmpeg-iOS编译脚本,不用下载源码,执行脚本会自动下载源码,如果不想每次自动下载,可以手动下载源码,稍微修改下FFmpeg编译脚本即可.这里不做过多说明.

  1. 修改脚本(build-ffmpeg.sh文件)内容
  2. x264编译好的文件夹必须在当前目录并且命名为fat-x264,所以我们第3步编译后生成的x264-iOS文件夹改名成fat-264,放在FFmpeg-iOS-build-script这个文件夹中。目录结构如下:
  3. 修改如下内容:
CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET -fembed-bitcode"
修改为
CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET"

在build-ffmpeg.sh中找到104行,修改为CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET"如下图:


4. 因为我们在上一步中仅仅编译arm64的x264,所以这里我们也仅仅编译arm64的FFmpeg.稍微修改脚本文件即可.

ARCHS="arm64 armv7 x86_64 i386"
修改为
ARCHS="arm64"

在build-ffmpeg.sh中找到37行:ARCHS="arm64 armv7 x86_64 i386"修改为:ARCHS="arm64"。如下图所示:

5. 如果要使用avutil.h相关功能,需要更改脚本
FFmpeg框架中的一个结构体命名为"AVMediaType"与苹果自带框架产生冲突,所以,我们必须修改编译脚本,使用"FFmpegAVMediaType"带替换"AVMediaType".这里需要在脚本文件中添加如下命令行,即将AVMediaType替换为FFmpegAVMediaType. 注意: $SOURCE为ffmpeg的根目录.

grep -rl AVMediaType ./$SOURCE | xargs sed -i .bak s@AVMediaType@FFmpegAVMediaType@g
  1. 编译脚本文件
./build-ffmpeg.sh


执行脚本后,会先下载源码:

7.

5. Xcode编译

  1. Xcode新建iOS项目
    新建一个iOS工程,然后将ViewController.m重命名为 ViewController.mm ,因为 FFmpeg中涉及C,C++混编,所以需要做此操作.

  2. 将FFmpeg编译好的头文件与库拉进项目中,并在主控制器测试代码,此时会有一大堆错误抛出,下面逐个解决.

  3. 添加依赖库

  4. 在Build Setting中禁止Bitcode

  5. 在Build Setting中设置头文件与库的位置
    这里特别要注意,因为在大多数项目中以及FFmpeg自身源代码中,都是以以下格式来导入的头文件

Android 下 FFmpeg源码编译

FFmpeg学习之八(FFmpeg源码编译)相关推荐

  1. libvirt零知识学习6 —— libvirt源码编译安装(4)

    接前一篇文章libvirt零知识学习5 -- libvirt源码编译安装(3) 上一篇文章中解决了YAJL包的编译时依赖问题.但是在解决后再次执行meson build时又遇到了新的错误"E ...

  2. libvirt零知识学习4 —— libvirt源码编译安装(2)

    接前一篇文章libvirt零知识学习3 -- libvirt源码编译安装(1) 上一篇文章中讲到执行以下构建命令时出现了错误"ERROR: Problem encountered: YAJL ...

  3. libvirt零知识学习3 —— libvirt源码编译安装(1)

    接前一篇文章libvirt零知识学习2 -- libvirt源码下载 上一篇文章中详细介绍了libvirt的源码下载过程,下载了libvirt-8.10.tar.xz并解压.本文在前文的基础上进行源码 ...

  4. as工程放到源码编译_方舟编译器学习笔记2 源码编译

    根据方舟官方文档编译了方舟编译器的源码,在这里简单谈谈其源码的编译过程: 1.操作系统环境: 64位版本的Ubuntu(官方推荐Ubuntu 16.04).我自己本身就有Ubuntu 16.04的虚拟 ...

  5. android源码编译 简书,android学习笔记之源码编译

    编译环境 1.需要Ubuntu 64bit,建议Ubuntu14.04 64-bit 2.安装openJDK7 $ sudo apt-get update $ sudo apt-get install ...

  6. dubbo学习笔记 一 源码编译

    前面学习了netty和rocketmq,当然前面的文章还会继续更新,继续往下写 2016 没几天了,我打算写下dubbo 2017 继续深入源码,大家有啥问题 都可以一起来讨论 源码搭建 下载源码 同 ...

  7. OpenCV学习:OpenCV源码编译(vc9)

    安装后的OpenCV程序下的build文件夹中,只找到了vc10.vc11和vc12三种编译版本的dll和lib文件,需要VS2010及以上的IDE版本,而没有我们常用的VS2008版本. 于是,需要 ...

  8. 34.FFmpeg学习笔记 - ffplay源码解读2之数据结构

    本篇分析一下ffplay的数据结构. (1)VideoState VideoState结构体,正如名字的含义,管理了一些全局的播放状态. typedef struct VideoState {SDL_ ...

  9. 35.FFmpeg学习笔记 - ffplay源码解读3之读文件

    本篇文章看看ffplay是如何读取packet放入队列中的. 一.先看入口函数: int main(int argc, char **argv) {VideoState *is;...av_init_ ...

最新文章

  1. 走过2010,期盼2011!
  2. 从零开始の后缀自动机
  3. 78. Subsets
  4. Selenium3自动化测试——14.操作Cookie
  5. USACO 3.1 Agri-Net 最短网络 (最小生成树)(克鲁斯卡尔算法)
  6. WINCE 网卡控制
  7. c# 操作IIS应用程序池
  8. Vue-cli项目中mockjs + axios实现前后端分离代码demo(清晰易懂)
  9. 在C/C++中使用输入输出流
  10. 线程池Executor框架解读
  11. 《第一行代码(第三版)》kotlin开发Android,学习笔记(进行中ing)
  12. vmware 14 激活码
  13. web结课大作业结业报告(附源码及展示效果)
  14. 微信分享代码申请key教程
  15. 百度搜索引擎优化入门篇——来自百度的一封信
  16. 用JavaScript实现烟花效果
  17. C. Minimum Ties
  18. php icon素材,Feather Icon - 简单漂亮的免费开源图标库
  19. python中re.compile_什么是pythonre.compile函数?
  20. 小秘谈币:什么是实在的佛系炒币?

热门文章

  1. phpcms选择文件无法加载插件怎么办_浏览器显示无法加载插件怎么办
  2. Python编程与其他编程语言相比有何优势?
  3. 人工智能打造充满创造力的新世界,华为云开发者日无锡站成功举办
  4. 想做项目经理?这些工具必须了解
  5. Apache Ranger and AWS EMR Automated Installation Series (3): Windows AD + EMR-Native Ranger
  6. 关于论文目录,一级标题加粗,而后面的.....与页码不加粗的正确设置方法
  7. 【实战】使用Bert微调完成文本二分类
  8. 1.oracle的dump理解一 BH buffer header
  9. spark使用中的一些总结-进阶版
  10. 没有雨伞的孩子必须努力奔跑(转)