文档章节

移植x264到vs2008之一

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:45
字数 632
阅读 6
收藏 0

最新的x264已经没有提供windows版的可编译工程,微软的VS编程开发工具无疑是最好的调试工具,要把它移植到vs开发环境下面有很多的工作要做。

网上也有很多人在问找x264的vs版本,本人根据之前在项目中的移植经验,总结如下:

1.从官网上下载最新的x264代码,我下载代码是2012年的版本x264-snapshot-20120108-2245。

2.x264在不同的目录下面有好几个文件名字是相同的,需要重新命名,否则会出现你无法想象到的链接错误。

3.把所有的代码添加到微软的VS2008的开发环境里面,编译。这时候,你会发现有很多编译错误,注意先不要加汇编。

  这些编译错误,总的来说,主要是由两类原因引起的。

 3.1 x264采用的C99的语法标准,而VS2008的开发环境是不支持这些语法的。

 3.2 相应的宏开关没有打开。

 

对于第一类错误,是一个体力活,也就是把这些C99的语法改成标准的C语言语法。这项工作大概需要2到3天的时间。

对于第二类错误,就是根据相应错误,找到其代码所在的宏,把相应的宏加到工程里面去。需要增加的宏主要如下:

 HAVE_STRING_H
__ICL
_WIN32
SYS_WINDOWS
HAVE_THREAD
HAVE_VISUALIZE
ARCH_X86
ARCH_X86_32

4. 这时候,你会发现,还有一些没有定义的宏和其它一些编译错误,有一个宏BIT_DEPTH,这个要重新定义为8。还有有些文件是没有必要加进来的,可以去掉。比如,output目录下面的mp4,flv相关的文件从工程中去掉,input目录里面同样有些文件可以去掉。

5. x264里的有一类宏定义的参数可变的,这种vs开发环境当中不支持的。需要把可变参数宏修改为固定的参数宏定义,代码中用到了几个参数的宏就重新定义几个参数的宏。

6.  当所有的编译错误已经解决之后,就是链接错误。这个比较容易解决,一般都是相关的宏没有打开。找到这些代码对应宏,将宏重新定义上。

7.  如果你完成了上面的过程,你基本上可以再vs平台用c代码跑x264了。

本文转载自:http://www.cnblogs.com/celerychen/archive/2013/03/09/2951470.html

共有 人打赏支持
abcijkxyz
粉丝 64
博文 6196
码字总数 1876
作品 0
深圳
项目经理
vc2008使用x264的问题

我是采用msys编译的x264,编译出libx264.dll.a 和libx264-78.dll。 我用vs2008做了一个测试程序,也对x264.h做的extern “C"的说明,但还是有link错误,我的错误是: 1>Linking... 1>libx264...

lucasli
2011/12/12
2.3K
7
tiny4412 移植ffmpeg 不适用命令行,使用C代码方式压缩视频

1.ubuntu 16.04 编译x264 ./configure --host=arm-linux --prefix=/x264-asm --enable-shared --disable-asm 编辑config.mak CC=arm-linux-gccCFLAGS=-Wshadow -O3 -fno-fast-math -Wall -I.......

Aexisun
2017/11/09
0
0
为什么ffmpeg下的默认参数,移植到vs2008后会出现不同呢?

为什么ffmpeg下的默认参数,移植到vs2008后会出现不同呢? 我输入yuv文件编码,设置了一些参数,移植到vs2008后,一样的参数,可是输出的文件的媒体信息则是和linux上输出的不同。请问有遇到...

miggyqian
2011/07/15
751
1
快速整理region的Visual Studio扩展--EasyVS

前前后后研究VSX也一个多月了,这两天终于做了一个小的插件EasyVS,该插件目前只支持VS2010,vs2008的支持可能要过一段时间。还好我没有使用MEF的内容,所以移植到vs2008上应该困难不大。写这...

匿名
2012/06/14
1K
0
编译支持x264 编码的ffmpeg并成功移植到docker

ffmpeg 目标要支持x264 编码解码,所以需要先编译x264. (1)下载X264 : git clone http://git.videolan.org/git/x264.git (2)安装X264: (3) ldconfig (4)然后重新安装FFMPEG: (5) 添加动...

caucy
01/13
18
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 小心着凉 @红薯

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:5.33起,其声呜呜然,如怨如慕,如泣如诉。余音袅袅,不绝如缕。分享Arch Enemy的单曲《Bridge Of Destiny (2009)》 《Bridge Of...

小小编辑
18分钟前
11
0
what f,,

anlve
58分钟前
0
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
10
0
现场看路演了!

HiBlock
昨天
19
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部