android基于ffmpeg的简单视频播发器 编译ffmpeg
2017-11-01 14:31
661 查看
ffmpeg编译的文章网上很多,很简单,我是windows10系统
首先安装mingw:https://sourceforge.net/projects/mingw/files
在安装界面选择basic setup,把右边的都勾选,然后点击installation选择apply change进行下载安装
配置环境变量,在Path内添加
C:\MinGW\bin
C:\MinGW\msys\1.0\bin
完成后,下载yasm:http://yasm.tortall.net/Download.html
将下载的yasm改名为yasm.exe,放到C:\MinGW\msys\1.0\bin下
将ffmpeg目录下的configure文件的代码改成
忘了要改哪几个参数,就去网上找来对照一下
然后是创建.sh文件了,由于不知道windows怎么创建.sh文件,就直接把ffmpeg的version.sh复制一份改成arm.sh文件
5种cpu架构,我也不知道我配置的对不对,配置信息还是看不懂
arm64-v8a架构文件
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-21/arch-arm64/
export TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64
export CPU=arm64-v8a
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS=""
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
--target-os=linux \
--arch=aarch64 \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
armeabi架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-15/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
export CPU=arm
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
armeabi-v7a架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-14/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
export CPU=armv7-a
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
x86架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-14/arch-x86/
export TOOLCHAIN=$NDK/toolchains/x86-4.9/prebuilt/windows-x86_64
export CPU=x86
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-m32"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/i686-linux-android- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
x86_64架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-21/arch-x86_64/
export TOOLCHAIN=$NDK/toolchains/x86_64-4.9/prebuilt/windows-x86_64
export CPU=x86_64
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-m64"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/x86_64-linux-android- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
NDK是我的ndk路径
SYSROOT和TOOLCHAIN都是根据cpu架构需要选择匹配的
TMPDIR临时缓存路径
PREFIX是so文件生成路径
打开mingw
$ cd C:/ffmpeg/ffmpeg-3.3.2 进入到ffmpeg目录
$ ./xx.sh 开始编译
首先安装mingw:https://sourceforge.net/projects/mingw/files
在安装界面选择basic setup,把右边的都勾选,然后点击installation选择apply change进行下载安装
配置环境变量,在Path内添加
C:\MinGW\bin
C:\MinGW\msys\1.0\bin
完成后,下载yasm:http://yasm.tortall.net/Download.html
将下载的yasm改名为yasm.exe,放到C:\MinGW\msys\1.0\bin下
将ffmpeg目录下的configure文件的代码改成
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
忘了要改哪几个参数,就去网上找来对照一下
然后是创建.sh文件了,由于不知道windows怎么创建.sh文件,就直接把ffmpeg的version.sh复制一份改成arm.sh文件
5种cpu架构,我也不知道我配置的对不对,配置信息还是看不懂
arm64-v8a架构文件
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-21/arch-arm64/
export TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64
export CPU=arm64-v8a
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS=""
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
--target-os=linux \
--arch=aarch64 \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
armeabi架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-15/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
export CPU=arm
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
armeabi-v7a架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-14/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
export CPU=armv7-a
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
x86架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-14/arch-x86/
export TOOLCHAIN=$NDK/toolchains/x86-4.9/prebuilt/windows-x86_64
export CPU=x86
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-m32"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/i686-linux-android- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
x86_64架构
#!/bin/sh
export TMPDIR=C:/f/ffmpegtemp
export NDK=C:/sdk/ndk-bundle
export SYSROOT=$NDK/platforms/android-21/arch-x86_64/
export TOOLCHAIN=$NDK/toolchains/x86_64-4.9/prebuilt/windows-x86_64
export CPU=x86_64
export PREFIX=C:/f/output/$CPU
ADDI_CFLAGS="-m64"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffserver \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/x86_64-linux-android- \
--target-os=linux \
--arch=$CPU \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
build_one
NDK是我的ndk路径
SYSROOT和TOOLCHAIN都是根据cpu架构需要选择匹配的
TMPDIR临时缓存路径
PREFIX是so文件生成路径
打开mingw
$ cd C:/ffmpeg/ffmpeg-3.3.2 进入到ffmpeg目录
$ ./xx.sh 开始编译
相关文章推荐
- android基于ffmpeg的简单视频播发器 播放视频
- android基于ffmpeg的简单视频播发器 时间同步
- android基于ffmpeg的简单视频播发器 目录
- android基于ffmpeg的简单视频播发器 三线程实现播放器(完)
- android基于ffmpeg的简单视频播发器 跳到指定帧 av_seek_frame()
- android基于ffmpeg的简单视频播发器 音频播放
- 最简单的基于FFmpeg的移动端样例:Android 视频转码器
- 最简单的基于FFmpeg的移动端例子:Android 视频转码器
- [雷神]最简单的基于FFmpeg的移动端例子:Android 视频转码器
- Android最简单的基于FFmpeg的例子(三)---编译FFmpeg成一个SO库
- Android最简单的基于FFmpeg的例子(二)---测试编译好的SO库
- 最简单的基于FFmpeg的移动端例子:Android 视频转码器
- Android最简单的基于FFmpeg的例子(一)---编译FFmpeg类库
- 最简单的基于FFmpeg的移动端例子:Android 视频转码器
- 最简单的基于FFmpeg的移动端例子:Android HelloWorld
- Android 最简单的基于FFmpeg的移动端例子:Android HelloWorld
- Android ffmpeg 3.4 JNI移植 NDK编译播放 ffserver 推送的 Rtsp 视频流
- Android本地视频播放器开发--NDK编译FFmpeg
- 最简单的基于FFmpeg的移动端样例:Android 视频解码器-单个库版
- 最简单的基于JavaEE和FFmpeg的视频网站