最近和同事一起合作,移植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移植记(一)的更多相关文章

  1. ffmpeg Win8移植记(二)

    接着上回说,http://www.cnblogs.com/zjjcy/p/3384517.html 上回移植了ffmpeg在ARM上面,只是纯C的代码,没有做汇编的优化.因为ffmpeg的ARM汇编是 ...

  2. ffmpeg之移植到ARM

    移植方法分为两种:第一种手工移植,第二种buildroot移植. 第一种手工移植: 优点:灵活性高 缺点:重复工作多 一.配置 ./configure --enable-memalign-hack - ...

  3. 【转】FFMPEG 库移植到 VC 需要的步骤

    原文:http://blog.csdn.net/leixiaohua1020/article/details/12747899 在VC下使用FFMPEG编译好的库,不仅仅是把.h,.lib,.dll拷 ...

  4. FFMPEG 库移植到 VC 需要的步骤

    在VC下使用FFMPEG编译好的库,不仅仅是把.h,.lib,.dll拷贝到工程中就行了,还需要做以下几步.(此方法适用于自己使用MinGW编译的库,也同样适用于从网上下载的编译好的库,例如http: ...

  5. ffmpeg android移植

    CMake语法简介(androidstudio中利用CMake开发NDK): http://blog.csdn.net/u013718120/article/details/62883711FFmpe ...

  6. 移植ffmpeg到VC环境心得

    所有想学习ffmpeg的网友有福了,大名鼎鼎的ffmpeg,移植到Windows的VC6版本全部开源,编译环境为VC6+SP5+VCPP5.别忘记了顶贴哦. 移植ffmpeg到windows,主要的修 ...

  7. FFmpeg 移植 Android

    近期项目需要解析苹果的HLS流媒体协议,而FFmpeg从0.11.1“Happiness”版本开始,才增加了对HLS协议的支持.目前网上关于FFmpeg编译移植的文章有很多,但大多都是对旧版本的说明. ...

  8. android 移植ffmpeg后so库的使用

    今天折腾了一天,可算是有所收获,成功的用jni调用了libffmpeg中的一个方法-----avcodec_version(),至于avcodec_version()是干什么用的我不大清楚,应该是获取 ...

  9. [转]FFMPEG视音频编解码零基础学习方法

    在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者.在和大家探讨的过程中,我忽然发现了一个问题:在“ ...

随机推荐

  1. 新浪微博API的使用Python

    本文记录了用新浪微博官方Python SDK调用API进行开发的流程. 准备工作 申请成为开发者并创建一个应用: 首先要有一个新浪微博的账号,然后去新浪微博开放平台(http://open.weibo ...

  2. Java基础学习——多线程之创建任务

    这次来盘点一下Java中用线程执行任务的写法. 1.扩展Thread 最基本的实现方法是在创建一个继承Thread的新类,在其中覆盖run()方法执行任务. public class MyThread ...

  3. Problem A: 深入浅出学算法002-n个1

    Description 由n个1组成的整数能被K(K<10000)整除,n至少为多少? Input 多组测试数据,第一行输入整数T,表示组数 然后是T行,每行输入1个整数代表K Output 对 ...

  4. bzoj 1015 维护连通块个数,离线并查集

    水. /************************************************************** Problem: 1015 User: idy002 Langua ...

  5. 使用Win2D在UWP程序中2D绘图(二)

    绘制API 首先还是看一下前文的的示例: args.DrawingSession.DrawEllipse(155, 115, 80, 30, Colors.Black, 3);    args.Dra ...

  6. linux开发node相关的工具

    epel-release yum install epel-release node yum install nodejs mongodb 安装mongodb服务器端 yum install mong ...

  7. 开始整理iOS职位面试问题及答案

    Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接 ...

  8. 小米手机不能直接运行Android Studio程序

    小米手机不能直接运行Android Studio程序 转载自:http://www.jianshu.com/p/6588c69b42cf Problem description: Android St ...

  9. PHP闭包--匿名函数

    匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值.当然,也有其它应用的情况. ...

  10. PulsingHalo(自定义涟漪)的使用方法

    PulsingHalo的git地址是: https://github.com/shu223/PulsingHalo Objective - C 一丶PulsingHalo的实例化和启动: Pulsin ...