ffmpeg Win8移植记(一)
最近和同事一起合作,移植ffmepg到Win8平台上。
Windows Store 要求3个架构X86 X64 ARM, 我们主要做的就是X86和ARM的平台,
X86的平台移植的文章已经很多了。我推荐这篇文章
http://blog.sina.com.cn/s/blog_47612ff10101mri6.html
但这样编译出来的库并不能在WinRT平台上使用。ffmepg引用了很多WinRT的禁止的API,编译是可以过的,但是通过不了WACK,也不能上传到store上面。
解决这个问题,一方面要减少ffmepg的功能,另一个方面要改写一些源代码。好在ffmpeg是一个跨平台的库,这些API都可以找到方法去替代。
另外如果只做本地播放,可以禁止ffmepg的网络,然后再写一个流的protocol注册到ffmpeg里面。
最后的configure 是这样的
./configure --toolchain=msvc --prefix=/home/Jessejiang/Output/ --disable-network --disable-programs --disable-protocols --extra-ldflags=-DWINAPI_FAMILY=WINAPI_FAMILY_APP --disable-dxva2
这样编译之后,还有一些log的API,这个需要找到他们,改一下源码就好。
ARM平台还是有些麻烦的。
首先,我们需要用 “VS201 ARM兼容工具命令提示”,从这个里面启动msys.
关键的一步是在configure 里面加入宏_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE 和_M_ARM
最后加上交叉编译和Link的选项-MACHINE:ARM
最后的configure 是这样的
./configure --toolchain=msvc --disable-programs --disable-network--disable-protocols --extra-cflags="-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE -D_M_ARM -DWINAPI_FAMILY=WINAPI_FAMILY_APP" --enable-cross-compile --target-os=win32 --arch=win32 --extra-ldflags="-MACHINE:ARM" --disable-dxva2 --prefix=/home/Jessejiang/Output/
这里用没有对ARM代码进行汇编的优化,因为我试过指定arch平台,但是CPU的架构版本我没办法定义。
最后,如果大家需要引用头文件到ffmpeg里面,需要用-I 像这样-ID:\src\win8\include。 但是configure之后不能马上make,需要再config.mak 文件中找到--extra-cflags 选项,把-ID:\src\win8\include 路径加上双引号-I ”D:\src\win8\include“
关于windows phone的移植,我们还没有开始,我猜大概和ARM的差不多。等做到了,我再回来补上。
听说VS13直接支持C99那ffmpeg或许直接就可以用VS编译了。
ffmpeg Win8移植记(一)的更多相关文章
- ffmpeg Win8移植记(二)
接着上回说,http://www.cnblogs.com/zjjcy/p/3384517.html 上回移植了ffmpeg在ARM上面,只是纯C的代码,没有做汇编的优化.因为ffmpeg的ARM汇编是 ...
- ffmpeg之移植到ARM
移植方法分为两种:第一种手工移植,第二种buildroot移植. 第一种手工移植: 优点:灵活性高 缺点:重复工作多 一.配置 ./configure --enable-memalign-hack - ...
- 【转】FFMPEG 库移植到 VC 需要的步骤
原文:http://blog.csdn.net/leixiaohua1020/article/details/12747899 在VC下使用FFMPEG编译好的库,不仅仅是把.h,.lib,.dll拷 ...
- FFMPEG 库移植到 VC 需要的步骤
在VC下使用FFMPEG编译好的库,不仅仅是把.h,.lib,.dll拷贝到工程中就行了,还需要做以下几步.(此方法适用于自己使用MinGW编译的库,也同样适用于从网上下载的编译好的库,例如http: ...
- ffmpeg android移植
CMake语法简介(androidstudio中利用CMake开发NDK): http://blog.csdn.net/u013718120/article/details/62883711FFmpe ...
- 移植ffmpeg到VC环境心得
所有想学习ffmpeg的网友有福了,大名鼎鼎的ffmpeg,移植到Windows的VC6版本全部开源,编译环境为VC6+SP5+VCPP5.别忘记了顶贴哦. 移植ffmpeg到windows,主要的修 ...
- FFmpeg 移植 Android
近期项目需要解析苹果的HLS流媒体协议,而FFmpeg从0.11.1“Happiness”版本开始,才增加了对HLS协议的支持.目前网上关于FFmpeg编译移植的文章有很多,但大多都是对旧版本的说明. ...
- android 移植ffmpeg后so库的使用
今天折腾了一天,可算是有所收获,成功的用jni调用了libffmpeg中的一个方法-----avcodec_version(),至于avcodec_version()是干什么用的我不大清楚,应该是获取 ...
- [转]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...
随机推荐
- USACO 2017 FEB Platinum nocross DP
题目大意 上下有两个长度为n.位置对应的序列A.B,其中数的范围均为1~n.若abs(A[i]-B[j]) <= 4,则A[i]与B[j]间可以连一条边.现要求在边与边不相交的情况下的最大的连边 ...
- 2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
邱老师降临小行星 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Des ...
- Hiho----微软笔试题《Combination Lock》
Combination Lock 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Finally, you come to the interview room. You ...
- HDU 4705 Y (2013多校10,1010题,简单树形DP)
Y Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submiss ...
- PNP NPN NMOS PMOS S8050 S8550 SI2301 SI2302 2N3904 2N3906 78L05 TL431
- Ubuntu 16.04.2 安装Linux kernel 4.10 内核并解决 VMware 问题
http://www.linuxidc.com/Linux/2017-03/141456.htm
- MYSQL SELECT 过程 转
本文从一个select语句的执行过程出发, 遍历MySQL的多个几子系统. 先放图一张, 按图索骥开始我们的历险. <ignore_js_op> 当客户端连接上MySQL服务端之后 ...
- linux下svn的用法
转载:http://blog.chinaunix.net/uid-22150747-id-189264.html 1.将文件checkout到本地目录 svn checkout path(path是服 ...
- HttpClient使用例子
HttpClient client = new HttpClient(); String url = http://localhost:8080/ana/workFlowOaInterface.do? ...
- Mac通过wifi连接 Android设备
公司用的全是mac开发,但是全是type-C接口,每次背电脑回家啊,还得带个数据线转换器…… 想着回来,直接通过Wi-Fi连接手机就好,发现完全忘了之前套路,现在赶紧记下一波,保证包教包会! STEP ...