win10 wsl 编译 android 上运行的 带rtmp模块 nginx

1. win10 wsl adb

下载ndk15c

sudo vi /etc/profile

export PATH="$ANDROID_NDK:$PATH"

source /etc/profile

 

# 安装android-tools

sudo apt install adb

 

# 默认安装位置为 /usr/lib/android-sdk/platform-tools/

 

# 下载最新版

wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip

 

实际看windows android studio platform-tools 版本 r29.0.5

实际下载地址

wget https://dl.google.com/android/repository/platform-tools_r29.0.5-linux.zip

 

# 解压缩

unzip ./platform-tools-latest-linux.zip

 

# 替换

sudo cp -r platform-tools /usr/lib/android-sdk/platform-tools

 

adb version

Android Debug Bridge version 1.0.41

Version 29.0.5-5949299

参考  《Win10+WSL开发踩坑记录

 

 

2. nginx 编译 

直接参考下面文章 按最后的文件列表下载文件放在一个目录

https://zhangtom.com/2017/07/11/交叉编译带RTMP模块的Nginx到Android/

2.1 运行
# 第一个句点不能省略,用于保留脚本之间的环境变量
. ./make_openssl.sh

2.2 修改make_nginx.sh

注掉make_nginx.sh 里 ./configure 及其以下命令行

 

运行 . ./make_nginx.sh

编辑auto/cc/name文件,将21行的“exit 1”注释掉(令测试程序不会报错)。

编译错误:

src/os/unix/ngx_files.c:885:21: error: unused variable 'fs' [-Werror=unused-variable]

struct statvfs fs;

解决src/os/unix/ngx_files.c加

#include <sys/statvfs.h>

加入变量

CROSS_COMPILE_GCC=/home/sheng/ndk/android-ndk-r15c/toolchains/arm-

linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc

RTMP_MODULE_DIR=/home/sheng/nginx-with-rtmp/nginx-rtmp-module

按下面一条条运行

./configure \
--crossbuild=android-arm \
--prefix=/sdcard/nginx \
--with-http_ssl_module \
--with-openssl=$OPENSSL_DIR \
--without-http_gzip_module \
--without-pcre \
--without-http_rewrite_module \
--without-http_proxy_module \
--without-http_userid_module \
--without-http_upstream_zone_module \
--without-stream_upstream_zone_module \
--add-module=$RTMP_MODULE_DIR \
--with-cc=$CROSS_COMPILE_GCC \
--with-cc-opt="--sysroot=$ANDROID_SYSROOT -Wno-sign-compare -pie -fPIE" \
--with-ld-opt="--sysroot=$ANDROID_SYSROOT -pie -fPIE"

make -j8
sudo make install -j8

 

编译好修改下面

vi nginx/conf/nginx.conf

 

rtmp {

17 server {

18 listen 1935;

19 application myapp {

20 live on;

21 drop_idle_publisher 5s;

22 }

23 }

24 }

 

42 #gzip on;

43

44 server {

45 listen 8081;

46 server_name localhost;

 

 

85 #location ~ /\.ht {

86 # deny all;

87 #}

88

89 location /stat {

90 rtmp_stat all;

91 rtmp_stat_stylesheet stat.xsl;

92 }

93 location /stat.xsl {

94 root /sdcard/nginx-rtmp-module/;

95 }

96 location /control {

97 rtmp_control all;

98 }

99 location /rtmp-publisher {

100 root /sdcard/nginx-rtmp-module/test;

101 }

102 location / {

103 root /sdcard/nginx-rtmp-module/test/www;

104 }

105 }

52 location /netold {
53 root html;
54 index index.html index.htm;
55 }

 

改权限

sudo chmod 777 /sdcard/nginx/sbin/nginx

 

把编译好修改好文件拷到手机

 

adb push -r /sdcard/nginx /sdcard

adb push nginx-rtmp-module /sdcard/nginx-rtmp-module

 

手机里shell运行

adb shell

cp /sdcard/nginx/sbin/nginx /data/local/tmp/nginx/sbin

 

运行nginx

./data/local/tmp/nginx/sbin/nginx

访问网页成功

http://192.168.123.20:8081

http://192.168.123.20:8081/stat

 

关闭nginx

./nginx -s stop

参考《交叉编译带RTMP模块的Nginx到Android》

https://zhangtom.com/2017/07/11/交叉编译带RTMP模块的Nginx到Android/

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WSL(Ubuntu)中编译ffmpeg for Android的步骤如下: 1. 安装必要的依赖项 在Ubuntu中打开终端,执行以下命令安装必要的依赖项: ``` sudo apt-get update sudo apt-get install build-essential git autoconf automake libtool pkg-config zlib1g-dev cmake mercurial texinfo ``` 2. 下载NDK 下载并解压Android NDK,可以从官网下载最新版:https://developer.android.com/ndk/downloads/ 假设你将NDK解压到了 /opt/android-ndk-r21d 目录下。 3. 安装交叉编译工具链 执行以下命令安装交叉编译工具链: ``` cd /opt/android-ndk-r21d/build/tools/ ./make_standalone_toolchain.py --arch arm64 --api 21 --stl=libc++ --install-dir /opt/android-toolchain-arm64 ``` 这里选择了 arm64 架构,API级别为 21,STL库为 libc++,安装目录为 /opt/android-toolchain-arm64。 4. 下载ffmpeg源码 执行以下命令下载ffmpeg源码: ``` git clone https://git.ffmpeg.org/ffmpeg.git cd ffmpeg ``` 5. 配置交叉编译环境 执行以下命令配置交叉编译环境: ``` export PATH=$PATH:/opt/android-toolchain-arm64/bin export CC=aarch64-linux-android21-clang export CXX=aarch64-linux-android21-clang++ export AR=aarch64-linux-android-ar export AS=aarch64-linux-android-as export LD=aarch64-linux-android-ld export RANLIB=aarch64-linux-android-ranlib export STRIP=aarch64-linux-android-strip ``` 6. 配置ffmpeg编译选项 执行以下命令配置ffmpeg编译选项: ``` ./configure \ --target-os=android \ --prefix=/opt/ffmpeg-android/arm64-v8a \ --enable-cross-compile \ --enable-pic \ --enable-jni \ --enable-mediacodec \ --enable-decoder=h264_mediacodec \ --enable-decoder=hevc_mediacodec \ --disable-static \ --enable-shared \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-postproc \ --disable-avdevice \ --disable-symver \ --disable-debug \ --disable-network \ --disable-everything \ --arch=aarch64 \ --cpu=armv8-a \ --cc=aarch64-linux-android21-clang \ --cxx=aarch64-linux-android21-clang++ \ --cross-prefix=aarch64-linux-android- \ --sysroot=/opt/android-toolchain-arm64/sysroot ``` 这里开启了 mediacodec 硬解码支持,只支持 H.264 和 HEVC 硬解码,其他配置选项根据需要自行调整。 7. 编译ffmpeg 执行以下命令编译ffmpeg: ``` make -j4 sudo make install ``` 这里使用了 4 核进行编译,可以根据实际情况进行调整。 8. 完成 编译完成后,ffmpeg库文件将会被安装到 /opt/ffmpeg-android/arm64-v8a 目录下。可以将这个目录打包成一个.aar库文件,用于Android Studio项目中的使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值