首页 > 其他分享 >FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher

FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher

时间:2024-09-26 13:21:58浏览次数:11  
标签:FFmpeg App gradle Studio EasyPusher Android 推流 五十三

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界面如下图所示。

FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher_音视频

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

FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher_直播_02

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

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

 


标签:FFmpeg,App,gradle,Studio,EasyPusher,Android,推流,五十三
From: https://blog.51cto.com/u_15067275/12118441

相关文章

  • FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
    FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播 合集-FFmpeg开发实战(55)  ​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMPStreamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRT......
  • FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播1111
    FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播 合集-FFmpeg开发实战(55)  ​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMPStreamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRT......
  • ffmpeg如何实现视频推流?
    FFmpeg是一个强大的多媒体框架,用于处理视频和音频数据。它包括了libavcodec(用于解码和编码)、libavformat(用于格式转换)、libavutil(提供一些辅助工具和函数)、libavfilter(用于音视频过滤)等多个库。以下这些都是FFmpeg的特性FFmpeg支持大量的音视频编解码器,如H.264、H.265、VP9、MPEG-2......
  • 用ffmpeg合并截取拆分音频
    转自:http://blog.sina.com.cn/s/blog_50e610900102vkab.html1多个mp3文件合并成一个mp3文件一种方法是连接到一起ffmpeg64.exe-i"concat:123.mp3|124.mp3"-acodeccopyoutput.mp3解释:-i代表输入参数          contact:123.mp3|124.mp3代表着需要连接到一起的......
  • 拥抱变化之FFmpeg 7.0与VVC
    IntroductiontoFFmpegFFmpeg isasolutiontorecord,convertandstreamaudioandvideo.Itisaveryfastvideoandaudioconverteranditcanalsoacquirefromaliveaudio/videosource.Designedtobeintuitive,thecommand-lineinterface(ffmpeg)tri......
  • FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播
    ​之前的文章《利用RTMP协议构建电脑与手机的直播Demo》介绍了如何使用RTMPStreamer实现完整的RTMP直播流程,另一篇文章《利用SRT协议构建手机APP的直播Demo》介绍了如何使用SRTStreamer实现完整的SRT直播流程,接下来介绍如何使用EasyPusher-Android实现完整的RTSP直播流程。一、......
  • FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
    ​EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。不过EasyPusher有好几年没更新了,尤其安卓版的EasyP......
  • [ffmpeg] 录制
    整理ffmpeg录制用到的一些API,以及一些理解API调用常用APIAVFormatContext*avformat_alloc_context(void);//创建avformat上下文结构体voidavformat_free_context(AVFormatContext*s);//intavformat_alloc_output_context2(AVFormatContext**ctx,constAV......
  • [ffmpeg] 音视频编码
    本文主要梳理ffmpeg中音视频编码的常用函数API调用常用APIconstAVCodec*avcodec_find_encoder(enumAVCodecIDid);AVCodecContext*avcodec_alloc_context3(constAVCodec*codec);voidavcodec_free_context(AVCodecContext**avctx);intavcodec_open2(AVCode......
  • ffplay python 播放rtsp ffmpeg播放rtsp流
    ffmpeg播放RTSP的一点优化: AVDictionary参数配置。 https://www.ffmpeg.org/doxygen/trunk/libavformat_2options__table_8h-source.html 基于ffmpeg的播放器起播延迟优化 :probesize ONVIF、RTSP/RTP、FFMPEG的开发实录: 这里注意多线程问题,如果你用FFMPEG解多......