​EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。

不过EasyPusher有好几年没更新了,尤其安卓版的EasyPusher仍在调用过时的support支持库,而非推出多年的AndroidX库。为了让EasyPusher-Android源码能够在最新的Android Studio上跑起来,需要对下载后的EasyPusher-Android源码进行若干改造。以下的改造内容基于Android Studio Dolphin(小海豚版本),详细的改造步骤说明如下。

1、升级编译的SDK版本

使用Android Studio Dolphin打开下载后的EasyPusher-Android项目,把模块build.gradle里面的compileSdkVersion和targetSdkVersion都从26改为28,因为小海豚版本的Android Studio最低支持到API28。

2、迁移到Androidx

上个步骤修改了模块build.gradle,单击“Sync Now”同步配置变动。等待同步完成,依次选择顶部菜单:Refactor→Migrate to AndroidX,表示把App工程迁移到AndroidX支持库,接着Android Studio就自动把App工程里的support库配置与相关类统统换成AndroidX的相应对象。

3、指定本地NDK的版本号

然后依次选择顶部菜单:Build→Make Project,发现App编译报错“No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi”,这是因为Android Studio没找到合适的NDK版本。解决办法是在配置文件中指定本地NDK的版本号(注意事先在SDK Manager中勾选对应版本的ndk,具体参见《FFmpeg开发实战:从零基础到短视频上线》一书第12章的“12.1.1  搭建Android的NDK开发环境”),打开模块build.gradle,把下面这行

    buildToolsVersion '28.0.3'

改为下面这行

    //buildToolsVersion '28.0.3'
    ndkVersion '21.4.7075529' // 这里的ndkVersion改为自己电脑上的ndk版本号

接着单击“Sync Now”同步配置变动。

4、升级App工程的Gradle版本号

然后依次选择顶部菜单:Build→Make Project,发现App编译报错“java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException”,这是因为EasyPusher-Android默认的Gradle版本太低。解决办法是升级EasyPusher-Android项目的Gradle版本号,先把gradle/wrapper/gradle-wrapper.properties里的distributionUrl值改为下面这个:

https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip

再把项目级别build.gradle里面的节点路径buildscript→dependencies→classpath值改为下面这个:

'com.android.tools.build:gradle:4.2.1'

接着单击“Sync Now”同步配置变动。

5、编译并运行EasyPusher-Android

然后依次选择顶部菜单:Build→Make Project,等待编译通过后依次选择顶部菜单:Run→Run 'app',在调试的真机上即可看到EasyPusher-Android的App界面如下图所示。

点击App界面右下角的设置按钮,打开设置页面如下图所示,注意修改上方编辑框中的服务端推流地址,比如rtsp://124.70.***.***/live/test。

注意,由于EasyPusher仅支持RTSP推流,不支持RTMP等其他推流协议,因此上面只能填写RTSP推流链接。至于服务端的流媒体服务器,可采用ZLMediaKit,有关ZLMediaKit的使用说明详见之前的文章《Linux环境安装ZLMediaKit实现视频推流》。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher的更多相关文章

  1. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  2. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  4. FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

    前言   本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8.   FFmpeg简介   FFmpeg是领先的多媒体框架,能够解码 ...

  5. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  6. Django开发笔记五

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.页面继承 定义base.html: <!DOC ...

  7. Java开发笔记(十三)利用关系运算符比较大小

    前面在<Java开发笔记(九)赋值运算符及其演化>中提到,Java编程中的等号“=”表示赋值操作,并非数学上的等式涵义.Java通过等式符号“==”表示左右两边相等,对应数学的等号“=”: ...

  8. FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库.不过考虑到刚开始仅仅调用 ...

  9. .net开发笔记(十三) Winform常用开发模式第一篇

    上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了“异步编程”这个概念,前前后后所有 ...

  10. FFmpeg开发笔记(二)搭建Windows系统的开发环境

    由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的.不过若有已经 ...

随机推荐

  1. ffmpeg精简

    自:http://www.chinavideo.org/viewthread.php?tid=5567&extra=page%3D1&page=2 现在更新一下目前遇到的问题: 我想裁 ...

  2. java引入es使用

    引入依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>el ...

  3. hadoop 主机免密设置

    hadoop三台主机免密设置 文件权限 .ssh 700 id_rsa 600 id_rsa.pub 644 环境rhel8 需要三台主机 master slave1 slave2 配置三台主机同一网 ...

  4. 初看vue3源码

    因为工作的原因又回到了vue的领域,需要加深对vue和vue生态的了解 也许平时比较多人手机看别人解析怎么看vue源码的,自己动手看vue源码的还是比较少,这次我想自己动手看看 首先 吧代码获取到本地 ...

  5. java 使用openoffice将doc、docx、ppt、pptx等转换pdf格式文件

    软件的安装与配置 链接: 官网 / C**N / 毒盘:提取码k47b 有能力的大佬可以选择c**n下载支持支持,官网下载可能有点慢 Windows下安装配置 下载安装包,安装到硬盘(这个就不截图了吧 ...

  6. mysql密码的初始化,修改与重置

    目录 mysql密码的初始化,修改与重置 郑重说明: 初始化密码(第一次使用前要初始化密码) 查看密码(已登录状态) 修改密码(已知原密码) 忘记密码(密码找回) 诺mysql装在Windows 诺m ...

  7. (续)在深度计算框架MindSpore中如何对不持续的计算进行处理——对数据集进行一定epoch数量的训练后,进行其他工作处理,再返回来接着进行一定epoch数量的训练——单步计算

    内容接前文: https://www.cnblogs.com/devilmaycry812839668/p/14988686.html 这里我们考虑的数据集是自建数据集,那么效果又会如何呢??? im ...

  8. CUDA编译.cu文件报错unsupported GNU version! gcc versions later than 10 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check;

    最近使用cuda11.3编译.cu文件,报错: #error -- unsupported GNU version! gcc versions later than 10 are not suppor ...

  9. 【EF Core】自动生成的字段值

    自动生成字段值,咱们首先想到的是主键列(带 IDENTITY 的主键).EF Core 默认的主键配置也是启用 Identity 自增长的,而且可以自动标识主键.前提是代表主键的实体属性名要符合以下规 ...

  10. java模拟并发请求工具类(测试专用)

    1.背景 实际生产中,我们开发好接口后可能会简单的压力测试一下,也就是说模拟并发测试,测试工具类如下: 2.工具类 package tentative.normal.other; import cn. ...