建设网站需要申请,深圳的网站建设的公司,郑州高端网站建设多少钱,响应式网站建设准备最近在学RTMP,记录一下完成的编译流程
我是mac 电脑,但是mac上编译一直通过不了,后来才换到服务器上编译,
其实mac也能编译,只是最开始踩到坑里面了…
这里记录一下linux编译完整流程
环境:
NDK: android-ndk-r17cFfmpeg: ffmpeg4.2.2 (高版本也可以编译)system: mac
1. …最近在学RTMP,记录一下完成的编译流程
我是mac 电脑,但是mac上编译一直通过不了,后来才换到服务器上编译,
其实mac也能编译,只是最开始踩到坑里面了…
这里记录一下linux编译完整流程
环境:
NDK: android-ndk-r17cFfmpeg: ffmpeg4.2.2 (高版本也可以编译)system: mac
1. 编译rtmp
首先下载 rtmp https://github.com/yixia/librtmp 导入到linux上
V7a编译
编写脚本: rtmp_build32.sh
// 网上copy的命令
#!/bin/bash
// NDK路径
NDK_ROOT$NDKCPUarm-linux-androideabiTOOLCHAIN$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64export XCFLAGS-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__17
export XLDFLAGS--sysroot${NDK_ROOT}/platforms/android-17/arch-arm
export CROSS_COMPILE$TOOLCHAIN/bin/arm-linux-androideabi-make install SYSandroid prefixpwd/android/v7a CRYPTO SHARED XDEF-DNO_SSL执行命令:
sh rtmp_build32
V8a编译
编写脚本: rtmp_build64.sh
#!/bin/bashNDK_ROOT$NDK
CPUaarch64-linux-android
TOOLCHAIN$NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
export XCFLAGS-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__21
export XLDFLAGS--sysroot${NDK_ROOT}/platforms/android-21/arch-arm64
export CROSS_COMPILE$TOOLCHAIN/bin/aarch64-linux-android-make cleanmake install SYSandroid prefixpwd/android/v8a CRYPTO SHARED XDEF-DNO_SSL只要看到这种,就是编译成功了 然后就可以看到编译的结果: 此时一定要把rtmp导出放到as上看看是否可用, 否则ffmpeg rtmp 一辈子也编译不出来, 这个坑我踩了2天…
RTMP 使用
在CPP下创建rtmp文件,并导入头文件测试 只要这里编译通过,能够运行起项目,那么就说明是编译是ok的
ffmpeg RTMP 交叉编译
下载ffmpeg 4.2.2
wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2解压FFmpeg4.2.2
tar -xvf ffmpeg-4.2.2.tar.bz2进入 ffmpeg4.2.2目录,执行 生成makefile
./configure --disable-x86asm修改 configure:
由clong方式改为GCC方式: 注释掉原本ffmpeg使用的rtmp,采用自己的rtmp V7a编译
编写脚本: ffmpeg_with_rtmp_build32.sh
#!/bin/bash# NDK路径
NDK_ROOT$NDKCPUarm-linux-androideabiTOOLCHAIN$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64ANDROID_API17# 生成.a文件地址
PREFIX./android/armeabi-v7a/ffmpeg_rtmp# 刚才 rtmp 生成的地址
RTMP/Tools/librtmp-master/android/v7a./configure \
--prefix$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-librtmp \
--enable-cross-compile \
--cross-prefix$TOOLCHAIN/bin/$CPU- \
--disable-shared \
--enable-static \
--sysroot$NDK_ROOT/platforms/android-$ANDROID_API/arch-arm \
--extra-cflags-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__$ANDROID_API -U_FILE_OFFSET_BITS -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -marcharmv7-a -mfloat-abisoftfp -mfpuvfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werrorformat-security -O0 -fPIC -I$RTMP/include \
--extra-ldflags-L$RTMP/lib \
--extra-libs-lrtmp \
--archarm \
--target-osandroidmake cleanmake install执行脚本: sh ffmpeg_with_rtmp_build32.sh编译时间 可能需要将近5分钟
V8a编译
编译脚本: ffmpeg_with_rtmp_build64.sh
#!/bin/bash
PREFIX./android/arm64-v8a/ffmpeg_rtmpNDK_ROOT$NDKCPUaarch64-linux-androidTOOLCHAINS$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64ANDROID_API21RTMP/Tools/librtmp-master/android/v8a./configure \
--prefix$PREFIX \
--enable-small \
--disable-avdevice \
--disable-filters \
--disable-encoders \
--disable-muxers \
--disable-yasm \
--disable-programs \
--enable-librtmp \
--enable-cross-compile \
--cross-prefix$TOOLCHAINS/bin/$CPU- \
--disable-shared \
--enable-static \
--sysroot$NDK_ROOT/platforms/android-$ANDROID_API/arch-arm64 \
--extra-cflags-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/$CPU -D__ANDROID_API__$ANDROID_API -U_FILE_OFFSET_BITS -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werrorformat-security -O0 -fPIC -I$RTMP/include \
--extra-ldflags-L$RTMP/lib \
--extra-libs-lrtmp \
--archarm64 \
--target-osandroidmake clean
make install执行脚本: sh ffmpeg_with_rtmp_build64.sh最后生成文件在当前目录 : /android/arm64-v8a/ffmpeg_rtmp 下生成对应的.a文件