Windows环境下使用cygwin ndk_r9c编译FFmpeg

 一、废话

最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,一步步来.先来讲一下FFmpeg,网上说的很多都是几百年前的,我亲测完美可用

联系我可以直接评论,也可以加我QQ:11635423

 二、干货 

我能力有限,但是我希望我写的东西能够让更多的人能够接受.我也是刚刚接触.做一个记录,也希望能够对其他人有好处.

几个概念理解一下:不理解也没关系.用了之后再说慢慢就理解了.主要是因为我们是windows

先是cygwin下的一些概念:
        unix style path: /cygdrive/盘符/目录名/文件名(其实是:/path/to/mount/point/path/to/file)
        mixed style path: 盘符:/目录名/文件名
        windows style path: 盘符:\目录名\文件名
 
        用cygpath可以在这些路径形式之间转换
        cygpath -m "path"
        cygpath -u "path"
        cygpath -w "path"

准备:1.FFmpeg的源码

2.cygwin下载,安装,这个网上基本都有.我不讲太多.git cygdrive bash make 这几个都需要下载

3.ndk我现在的版本r9c.最新的现在应该到r9d了.需要的去更新问题不大的.而且注意设置环境变量

我的设置如下: 因为下面的命令要用到,所以没设的就跟我设一样的就好,避免出现不必要的问题

ANDROID_NDK_ROOT  E:\android-ndk-r9c\

名字一样就好,路径还是你自己的.

4.编译脚本.这个脚本自己去理解吧.我也是一知半解--脚本名称:Config.sh

echo "FFMPEG_SOURCE_DIR=$FFMPEG_SOURCE_DIR"
EXTRA_OPTIONS=()

case $OS in
Android)
    GNU_BUILD_OS=linux

case $ARCH in
    armeabi-v7a*)
        TARGET_ARCH=arm
        GNU_BUILD_ARCH=armv7-a

CROSSCOMPILE_PREFIX=arm-linux-androideabi-

EXTRA_OPTIONS+=(
            --cpu=cortex-a9
            --extra-cflags=-mfpu=vfpv3-d16
            --extra-cflags=-DANDROID
            --extra-cflags=-gdwarf-2
            --disable-fast-unaligned
            --extra-cflags=-mno-unaligned-access
        )
        ;;
    esac

case $ARCH in
    armeabi-v7a-hard)
        APP_PLATFORM=android-19

EXTRA_OPTIONS+=(
            --extra-cflags=-mhard-float
            --extra-cflags=-D_NDK_MATH_NO_SOFTFP=1
            --extra-libs=-lm_hard
            --extra-ldflags=-Wl,--no-warn-mismatch
        )
        ;;
    armeabi-v7a)
        APP_PLATFORM=android-8
        ;;
    esac

SYSROOT="${ANDROID_NDK_ROOT}/platforms/${APP_PLATFORM}/arch-${TARGET_ARCH}"
    ;;
Windows)
    case $ARCH in
    x86_64)
        CROSSCOMPILE_PREFIX=x86_64-w64-mingw32-
        EXTRA_OPTIONS+=(
            --extra-cflags=-m64
        )
        ;;
    esac

GNU_BUILD_OS=mingw32
    GNU_BUILD_ARCH=$ARCH
    ;;
Linux)
    GNU_BUILD_OS=linux
    GNU_BUILD_ARCH=$ARCH
    ;;
esac

INSTALL_SUBDIR=${OS}/${ARCH}

echo FDK_AAC_INSTALL_DIR=$FDK_AAC_INSTALL_DIR
echo X264_INSTALL_DIR=$X264_INSTALL_DIR

$FFMPEG_SOURCE_DIR/configure \
    --prefix=/ \
    --sysroot=${SYSROOT} \
    --cross-prefix=${CROSSCOMPILE_PREFIX} \
    --arch=$GNU_BUILD_ARCH \
    --target-os=$GNU_BUILD_OS \
    "${EXTRA_OPTIONS[@]}" \
    --extra-cflags="-I${FDK_AAC_INSTALL_DIR}/include" \
    --extra-cflags="-I${X264_INSTALL_DIR}/include" \
    --extra-ldflags="-L${FDK_AAC_INSTALL_DIR}/lib" \
    --extra-ldflags="-L${X264_INSTALL_DIR}/lib" \
    \
    --enable-gpl \
    --enable-version3 \
    --enable-nonfree \
    \
    --enable-pic \
    \
    --disable-swscale-alpha \
    --disable-doc \
    --disable-network \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-avdevice \
    --disable-postproc \
    \
    --disable-everything \
    \
    --enable-demuxer=mov \
    --enable-demuxer=mpegts \
    --enable-demuxer=mp3 \
    --enable-demuxer=pcm_s16le \
    --enable-demuxer=rawvideo \
    \
    --enable-muxer=mp4 \
    --enable-muxer=mpegts \
    --enable-muxer=pcm_s16le \
    --enable-muxer=rawvideo \
    \
    --enable-decoder=amrnb \
    --enable-decoder=amrwb \
    --enable-decoder=h264 \
    --enable-decoder=mpeg4 \
    --enable-decoder=h263 \
    --enable-decoder=h263p \
    --enable-decoder=mp3 \
    --enable-decoder=pcm_s16le \
    --enable-decoder=aac \
    --enable-decoder=rawvideo \
    \
    --enable-encoder=libfdk_aac \
    --enable-encoder=libx264 \
    --enable-encoder=pcm_s16le \
    --enable-encoder=rawvideo \
    \
    \
    --enable-bsf=aac_adtstoasc \
    --enable-bsf=h264_mp4toannexb \
    \
    --enable-filter=scale \
    --enable-filter=aresample \
    --enable-filter=resample \
    --enable-filter=transpose \
    --enable-filter=vflip \
    --enable-filter=hflip \
    --enable-filter=crop \
    --enable-filter=amix \
    --enable-filter=pan \
    \
    --enable-protocol=file \
    \
    --enable-parser=mpegaudio \
    --enable-parser=mpeg4video \
    --enable-parser=h264 \
    --enable-parser=h263 \
    --enable-parser=aac \
    --enable-parser=aac_latm \

 三、编译

FFmpeg

1.定位到编译目录
2.执行以下命令
TMP=$(cygpath -m "$TMP") \
ARCH=armeabi-v7a \
OS=Android \
ANDROID_NDK_ROOT=$(cygpath -m "$ANDROID_NDK_ROOT") \
FFMPEG_SOURCE_DIR=/cygdrive/e/soft/source/FFmpeg \
/cygdrive/e/qupai_code_eclipse/code/ThirdParty/Build/FFmpeg/Config.sh
3.修改config.h config.mk Makefile 路径问题

config之后还需要修改build目录下config.mak中的SRC_PATH和Makefile(不是SRC_DIR下的)中的路径, 将其改为mixed style

4.执行make命令 --注意,这里使用NDK的make.
"$ANDROID_NDK_ROOT/prebuilt/windows/bin/make" -j8
5.执行install  --注意,这里使用NDK的make.
"$ANDROID_NDK_ROOT/prebuilt/windows-x86_64/bin/make" install DESTDIR="指定的安装目录,mixed style"

Windows环境下使用cygwin ndk_r9c编译FFmpeg,布布扣,bubuko.com

时间: 2024-10-05 17:31:17

Windows环境下使用cygwin ndk_r9c编译FFmpeg的相关文章

Windows环境下使用cygwin ndk_r9c编译x264

 一.废话 最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,下面是x264,网上说的很多都是几百年前的,我亲测完美可用 还是那句话 我能力有限,但是我希望我写的东西能够让更多的人能够接受.我也是刚刚接触.做一个记录,也希望能够对其他人有好处.联系我可以直接评论,也可以加我QQ:11635423  二.干货  准备:1.x264的源码 2.cygwin下载,安装,这个网上基本都有.我不讲太多.git cygdrive bash make 这几个都需要下载 3.ndk我

Windows环境下使用Cmake ndk编译fdk-aac

 一.废话 最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,下面是x264,网上说的很多都是几百年前的,我亲测完美可用 还是那句话 我能力有限,但是我希望我写的东西能够让更多的人能够接受.我也是刚刚接触.做一个记录,也希望能够对其他人有好处.联系我可以直接评论,也可以加我QQ:11635423  二.干货  准备:1.fdk_aac的源码  git clone https://android.googlesource.com/platform/external/aa

Windows环境下的RTKPlot_Qt版本编译时遇到的问题和解决方法

在使用了 RTKLIB开源包自带的 rtkplot.exe后,知道了它所具有的功能,就想着如何模仿它做出一个 demo.一开始看的是之前下载的 2.4.2版本的 RTKLIB,里面是使用 Delphi开发的.由于我现在对 Qt比较熟悉,所以想着使用 Qt框架来开发这个 demo.在看源码的过程中,阴差阳错之间又去官网上重新下载了一次源码包,结果发现最新的 2.4.3版本里面就带有相关 App程序的 Qt实现.这样的话,就可以直接阅读现成的 Qt源码了.不过首先需要解决的问题是,要尝试将所给的源代

Windows环境下通过Cygwin搭建Gitolite服务器

本文参考:http://blog.csdn.net/benkaoya/article/details/8884677 背景: 去年接触Git前我们团队甚至还在用VSS,一次外包项目中由于需要和外包团队紧密合作,由外包团队引入了Git. 之后,由于团队规模的不断扩大,以及体会到了Git强大的分支功能,我们所有的项目都迁移到了Git上. 再之后,新人的不断加入,领导们担心起权限的问题,我们的服务器管理员考虑使用Gitsis或者Gitolite,但是查找资料研究了一翻之后觉得太繁琐了,一直搁置. 然后

Windows环境下log4cxx的编译及使用(转载)

1.介绍 Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计.有关log4cxx的更多信息可以从Apache Loggin Service的网站http://logging.apache.org获得.当前的最新版本为0.10.0,本文内容及示例代码都是基于此版本. 2.获取软件包 可以从官方网站(http://logging.apache.org/l

Windows环境下使用VS2005编译OpenSSL

如何Windows环境下,使用VS2005编译OpenSSL,虽然这个问题在Baidu.Google上一堆,但安装中还是遇到些问题,在这里 记录下来希望能帮助大家不要在走弯路.注:我是在WinXP SP3下使用VS2005SP1下编译成功的,OpenSSL的版本是0.9.8l. http://www.cnblogs.com/moonset7/archive/2009/12/18/1627317.html by 月落上弦 一.编译OpenSSL  准备工作:下载OpenSSL源码 官方网站下载Op

windows环境下搭建ffmpeg开发环境

ffmpeg是一个开源.跨平台的程序库,可以使用在windows.linux等平台下,本文将简单讲解windows环境下ffmpeg开发环境搭建过程,本人使用的操作系统为windows 7,集成开发环境为Visual Studio 2005,ffmpeg版本为2.2.有人可能会说都什么年代了,还VS 2005,现在VS 2010/2012/2013都出了.本人电脑也安装了VS2010,每次打开,伴随着硬盘指示灯的闪烁,以及硬盘的吱吱响声,过了许久才弹出闪屏页面,此时你的思绪可能已经飘到了南极,启

windows环境下使用apxs编译添加apache模块

windows环境下使用apxs编译添加apache模块 简介说明:本文使用mod_limitipconn模块为例. 环境: windows7 x86系统 apache 2.4.18 目标: 在windows环境下,利用mod_limitipconn0.24源码.apxs为apache2.4.18添加mod_limitipconn模块. 分析: limitipconn模块最新版已经支持apache2.4了.但是没有编译好的对应版本.因此需要自己动手编译模块.在windows下要实现这个目标,需要

Openstack 二次开发之:在windows 环境下编译Openstack-java-sdk

在windows环境下使用maven对openstack-java-sdk进行编译 编译源文件 下载源代码 git clonehttps://github.com/woorea/openstack-java-sdk.git 下载并安装gpg4win http://ftp.gpg4win.org/ 本次过程中下载的是gpg4win-2.2.2.exe 配置gpg 查看 F:\github\openstack-java-sdk>gpg --list-key gpg:C:/Users/Eric.sun