【问题标题】:Using FFMPEG android on Windows在 Windows 上使用 FFMPEG 安卓
【发布时间】:2012-05-10 02:27:31
【问题描述】:

我知道这个问题可能与许多其他问题重复,但没有好的答案也没有好的教程可供使用

我想在我的项目中使用 ffmpeg 我在 windows 上使用 android ndk7 不知道要下载什么 ffmpeg 代码,可用的编译教程适用于 UBUNTU 对 windows 没什么用

非常感谢一个非常好的答案。

【问题讨论】:

    标签: java android android-ndk ffmpeg


    【解决方案1】:

    我从来没有能够在 Windows 下为 Android 构建 FFMPEG,但在 Ubuntu 下成功地做到了(虽然遇到了一些困难)。

    我使用 Oracle VM Virtual Box 免费软件在 Windows 下模拟 Ubuntu 机器。

    然后我使用来自 bambuser http://bambuser.com/opensource 的脚本构建了 FFMPEG。

    然后我将生成的目录移动到我项目的 jni 文件夹下的 windows 中,并从我的 Android.mk 中引用这些库

    FFMPEG_DIR := ffmpeg
    ifeq ($(TARGET_ARCH_ABI), armeabi)
    FFMPEG_DIR := $(FFMPEG_DIR)/armeabi
    else 
    ifeq ($(TARGET_ARCH_ABI), armeabi-v7a) 
    FFMPEG_DIR := $(FFMPEG_DIR)/armeabi-v7a
    endif 
    endif 
    
    include $(CLEAR_VARS) 
    LOCAL_MODULE := libavcodec
    LOCAL_SRC_FILES := $(FFMPEG_DIR)/lib/$(LOCAL_MODULE).a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)
    
    include $(CLEAR_VARS) 
    LOCAL_MODULE := libavcore
    LOCAL_SRC_FILES := $(FFMPEG_DIR)/lib/$(LOCAL_MODULE).a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)
    
    include $(CLEAR_VARS) 
    LOCAL_MODULE := libavdevice
    LOCAL_SRC_FILES := $(FFMPEG_DIR)/lib/$(LOCAL_MODULE).a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)
    
    include $(CLEAR_VARS) 
    LOCAL_MODULE := libavfilter
    LOCAL_SRC_FILES := $(FFMPEG_DIR)/lib/$(LOCAL_MODULE).a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)
    
    include $(CLEAR_VARS) 
    LOCAL_MODULE := libavformat
    LOCAL_SRC_FILES := $(FFMPEG_DIR)/lib/$(LOCAL_MODULE).a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)
    
    include $(CLEAR_VARS) 
    LOCAL_MODULE := libavutil
    LOCAL_SRC_FILES := $(FFMPEG_DIR)/lib/$(LOCAL_MODULE).a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)
    
    include $(CLEAR_VARS) 
    LOCAL_MODULE := libswscale
    LOCAL_SRC_FILES := $(FFMPEG_DIR)/lib/$(LOCAL_MODULE).a
    LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
    include $(PREBUILT_STATIC_LIBRARY)
    

    【讨论】:

    • 当我得到你的答案时,我应该使用 ubuntu 编译 ffmpeg bambuser.com/opensource。脚本使用这里指定的方法roman10.net/how-to-build-ffmpeg-for-android然后使用它???
    • roman10 的方法对我不起作用。我刚刚使用了他们在 bambuser 网站上的开源发行版中的 build.sh 脚本(获取最新版本)
    • 非常感谢您的努力,但由于我对此一无所知,我很难理解您我已经安装了 ubuntu 并下载了 bambuser 代码我应该下载 ndk7 还是 ndk 下一步该怎么做5??以及我应该如何在 bambuser 中构建脚本
    • 好的,我运行 build.sh 它创建了一个目录,其中包含一个包含两个文本文件的子文件夹
    • 发行版中有一个 README 文件。首先运行 extract.sh 然后构建。我现在不记得一切了,但它构建得很好
    【解决方案2】:

    您可以将其用作 build_android.sh,我对其进行了测试,它对我有效

    #!/bin/bash
    NDK=D:/android/ndk/android-ndk-r10d
    SYSROOT=$NDK/platforms/android-8/arch-arm/
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/windows
    function build_one
    {
    ./configure \
    --prefix=$PREFIX \
    --disable-shared \
    --enable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-avdevice \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=linux \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    }
    CPU=arm
    PREFIX=$(pwd)/android/$CPU
    ADDI_CFLAGS="-marm"
    build_one
    

    您还需要运行以下命令:

    dos2unix build_android.sh
    chmod +x build_android.sh
    ./build_android.sh
    

    使用this Tutorial 作为参考

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 2017-11-23
      • 1970-01-01
      • 2012-09-30
      • 2014-10-22
      • 2017-03-29
      • 1970-01-01
      • 2016-05-29
      • 2013-08-10
      相关资源
      最近更新 更多