FFmpeg自带H.264解码器,可是没有自带H.264编码器,所以就要用到x264库了
一、x264是什么?
x264是一个开源的H.264/MPEG-4 AVC视频编码函数库,通过这个库可以编码h264视频
二、配置过程
1.下载
msys官网:https://www.msys2.org/
下好之后一路安装
2.配置编译所需的工具
- 更换国内源
对\etc\pacman.d里的三个mirrorlist文件,分别添加到官方镜像前面
mirrorlist.mingw32:
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/
mirrorlist.mingw64:
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
mirrorlist.mingw:
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/
- 更新软件库
pacman -Syu//第一次输入后会重启,要再换一下源
pacman -Su
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-x86_64-gcc
pacman -S base-devel
pacman -S nasm
pacman -S yasm
- 检查:
打开MSYS2 64bit,执行gcc -v
,没出错就说明安好了
3.配置x264
- 下载x264源码包,地址:https://www.videolan.org/developers/x264.html
- 下载后放到msys64\home下
- 打开MSYS2 MinGW 64-bit,执行
./configure --prefix=../build --host=x86_64-w64-mingw32 --enable-shared --extra-ldflags=-Wl,--output-def=libx264.def
会生成一个def文件 - 将x264.dll也放在vs/vc的bin下,如我的目录就是C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64下,cmd命令:
lib /machine:x64 /def:libx264.def
就生成了我们要的lib文件(做好的x264-155.dll、.def、.lib
链接:https://pan.baidu.com/s/1mcNkEXjOJUZs9LcI5YKT7w
提取码:w1js)
4.测试
- 在工程里添加x264.h、x264_config.h、libx264.dll和libx264.lib
- 在项目->属性->链接器->输入->输入->附加依赖库->添加libx264.lib
- 测试代码如下:
#include <iostream>
#include <string>
#include "stdint.h"
extern "C"
{
#include "x264.h"
#include "x264_config.h"
};
using namespace std;
int main(int argc, char **argv)
{
x264_param_t param;
x264_param_default(¶m);
cout << "hello,x264" << endl;
return 0;
}
成功!!!