FFMPEG 填坑之旅(零----准备工作)

·  阅读 1005

前言

最近出于公司发展需要以及个人技术深入发展的考虑,需要二次入坑FFMPEG。 距离上次有这种需要,已经过去了4年了。上次巧妙的避开的这个大坑,只使用了rtmpDump和faac两个库,就已经很头痛了,希望这次在FFMPEG上不会被埋里面。

这里就来记录下本次必入的情况下,遇到的一些问题,以供其他要入坑的同志能(以及以后把这块又忘了的自己)参考。

进度有限,更新不太会按时,但是会尽量一次更新一套完整的东西。

大致的想法是分称金字塔来解构这次的记录: 首先是编译以及导入到Android Studio里面,然后是基础应用,最后做一下各个功能的分解。

于此开始记录。

今天先更新选材以及编译内容。 后续按步骤更新。

-----------------------------假装正文分割线-------------------------

首先是选,本着用新不用旧的原则,我初选了FFMPEG 4.2 和 NDK-R20,但是由于后续遇到了个奇葩问题,NDK回退到17c,关于这个问题,等下编译统一说。

接着是编译。

脚本没得说,当今网络一搜一大把,无非是一些变量设置,以及config参数设置,按需改改就好了。

#!/bin/bash
NDK=/path/to/ndk/android-ndk-r17c
SYSROOT=$NDK/platforms/android-21/arch-arm
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/arm-linux-androideabi
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
PREFIX=$(pwd)/android/armv7-a
CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
build_android()
{
    ./configure \
    --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-avdevice \
    --disable-symver \
    --cross-prefix=$CROSS_PREFIX \
    --target-os=android \
    --arch=arm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-I$ASM -isysroot $ISYSROOT -D__ANDROID_API__=21 -Os -fpic -marm -march=armv7-a"
    make clean
    make
    make install
}
build_android

附上我用的脚本,就不再赘述了,NDK这些的Path设置,大家应该都懂吧。

接着上遇到的问题。

遇到的问题,就只有一个,是UPD编不过。

libavformat/udp.c:290:28: error: request for member 's_addr' in something not a structure or unionmreqs.imr_multiaddr.s_addr = ((struct sockaddr_in *)addr)->sin_addr.s_addr;

这个问题在网络上很常见,是在FFMPEG4.0以后出现的,主要问题是NDK版本太低了,但是我用r20也出了这个问题,我就感觉有点不太舒服了。 逐步降低NDK版本之后,在r17c编过了......早晓得就直接用这个最推荐的版本了...

其他的问题我没遇到。一路很顺利就过了。

好了,编译这一步就搞完了,过段时间来说说导入到Android Studio。

分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改