zoukankan      html  css  js  c++  java
  • 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:srcwin8include。 但是configure之后不能马上make,需要再config.mak 文件中找到--extra-cflags 选项,把-ID:srcwin8include 路径加上双引号-I ”D:srcwin8include“

    关于windows phone的移植,我们还没有开始,我猜大概和ARM的差不多。等做到了,我再回来补上。

    听说VS13直接支持C99那ffmpeg或许直接就可以用VS编译了。

  • 相关阅读:
    [bigdata] storm集群安装及测试
    [bigdata] kafka集群安装及测试
    [bigdata] spark集群安装及测试
    [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题
    [bigdata] 启动CM出现 “JDBC Driver class not found: com.mysql.jdbc.Driver” 以及“Error creating bean with name 'serverLogFetcherImpl'”问题的解决方法
    [JavaEE]设计模式之SOLID原则
    [Android]Volley源码分析(五)
    [Android]Volley源码分析(四)
    [Android]Volley源码分析(三)
    python学习Day13--生成函数
  • 原文地址:https://www.cnblogs.com/zjjcy/p/3384517.html
Copyright © 2011-2022 走看看