日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows 生成ffmpeg安卓全平台so

發布時間:2023/12/20 windows 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows 生成ffmpeg安卓全平台so 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、搭建環境
    • 1、下載NDK
    • 2、安裝msys2
      • (1)運行msys2
      • (2)安裝必要工具
    • 3、下載ffmpeg源碼
  • 二、生成
    • 1、編寫shell
      • (1)模板
      • (2)設置TOOLCHAIN
      • (3)設置API
    • 2、修改configure
    • 3、使用msys2生成
      • (1)打開msys2
      • (2)cd源碼目錄
      • (3)調用shell
    • 3、找到安裝目錄
  • 三、生成好的包
  • 總結


前言

做安卓開發的時候,需要實現拉流渲染視頻之類的功能,使用ffmpeg比較方便。但是要生成ffmpeg的安卓庫是有點麻煩的,需要使用ndk的工具鏈以及shell。相對來說在Linux上操作是比較容易的,其實Windows上生成也不是很難,shell是基本一致的。


一、搭建環境

1、下載NDK

我們首先需要有NDK的工具鏈才能進行交叉編譯,如果安裝了AndroidSudio則找到NDK的目錄即可。或者下載Windows版本的NDK:https://developer.android.google.cn/ndk/downloads/

2、安裝msys2

msys2是Windows的shell環境。下載地址:https://www.msys2.org/。下載完成后直接安裝。安裝完成后在C:\msys64找到msys2.exe并運行,進入控制臺。

(1)運行msys2

(2)安裝必要工具

在msys2中輸入:

pacman -S gcc make nasm yasm

3、下載ffmpeg源碼

http://ffmpeg.org/download.html
比如當前最新版本5.0.1如下圖所所示:


二、生成

1、編寫shell

新建一個build.sh的文件在ffmpeg目錄中。添加如下內容:

(1)模板

#!/bin/bash #ndk工具鏈路徑 -可配置 TOOLCHAIN=C:/Users/xin/AppData/Local/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/windows-x86_64 #ndk api版本 -可配置 API=29 SYSROOT=$TOOLCHAIN/sysroot function build_start() { make clean ./configure --target-os=android \ --prefix=$PREFIX \ --arch=$ARCH \ --cpu=$CPU \ --cc=$CC \ --cxx=$CXX \ --cpu=$CPU \ --strip=$TOOLCHAIN/bin/llvm-strip \ --nm=$TOOLCHAIN/bin/llvm-nm \ --enable-shared \ --disable-static \ --enable-gpl \ --cross-prefix=$CROSS_PREFIX \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make -j8 make install } CPU=armv7-a ARCH=arm CROSS_PREFIX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=$CPU" build_start CPU=armv8-a ARCH=arm64 CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=$CPU" build_start CPU=x86 ARCH=x86 CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=i686" ADDITIONAL_CONFIGURE_FLAG=--disable-asm build_start CPU=x86-64 ARCH=x86_64 CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android$API- CC=${CROSS_PREFIX}clang CXX=CC=${CROSS_PREFIX}clang++ PREFIX=./android/${CPU}_${API}/ OPTIMIZE_CFLAGS="-march=$CPU" build_start

(2)設置TOOLCHAIN

參照模板的路徑設置TOOLCHAIN,到windows-x86_64這一級目錄。注意將反斜杠改為正斜杠。

TOOLCHAIN=NDK TOOLCHAIN路徑

(3)設置API

根據需要設置API版本如:

API=29

2、修改configure

修改ffmpeg源碼目錄的configure文件將如下內如替換。

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

將上述內容替換成如下內容。

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)'

3、使用msys2生成

打開msys2.exe。cd到ffmpeg源碼目錄

(1)打開msys2

(2)cd源碼目錄

直接cd到ffmpeg源碼目錄即可,需要注意加雙反斜杠避免轉義。比如

cd D:\\ffmpeg-5.0.1

(3)調用shell

./build.sh

注:第一次生成出現如下報錯是正常的,繼續等待即可。

3、找到安裝目錄

生成完成在ffmpeg源碼目錄的android文件夾下即可找到所有so


三、生成好的包

已測試可用的生成好的包
ffmpeg5.0.1安卓全平臺so動態庫


總結

總的來說在Windows上生成ffmpeg還是不難的,只是網上資料較少而且不齊全,導致容易生成失敗甚至因為存在rm -rf導致整個磁盤被清空。最好的方式還是先在Linux生成成功后,再將方法移植到Windows。

總結

以上是生活随笔為你收集整理的Windows 生成ffmpeg安卓全平台so的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。