android集成EasyPlayer播放器播放实时流媒体视屏
android集成EasyPlayer播放器播放实时流媒体视屏
最近公司项目需要实现一个rtsp实时流媒体视频的播放,在移动端尝试了多个第三方能播放rtsp流实时视频的软件后发现EasyPlayer的实时性较好,画面、声音也都还可以。所以,今天记录一下自己的成果。第一次写。。EasyPlayer是由EasyDarwin开源团队开发和维护的一个流媒体播放器项目,目前有RTSP版和Pro版两个版本,RTSP支持Windows(支持多窗口、包含ActiveX,npAPI Web插件)、Android平台,iOS平台,视频支持H.264,H.265,MPEG4,MJPEG,音频支持G711A,G711U,G726,AAC,支持RTSP over TCP/UDP,支持硬解码,是一套极佳的RTSP流播放组件。
easyPlayer集成步骤
1.先下载官方的dome https://github.com/EasyDarwin/EasyPlayer_Android
2.下载后导入到android studio中(一般会有问题,①是你的gradle版本和他的不一样,②可能他关联的包,库你的环境里没有。。。还有些其他的)
3.可以看到他关联了一个库(rtspclient)
4.在自己的项目中关联rtspclient(主要查看下rtspclient的gradle和自己项目的gradle,这里可能会出现一些问题)
开始代码中的集成了
1。布局文件中添加一个TexTureView控件,并在activity中实现其回调。
<TextureViewandroid:id="@+id/ttV"android:layout_width="match_parent"android:layout_height="match_parent" />mTtv.setOpaque(false);//设置是否透明
mTtv = findViewById(R.id.ttV);
mTtv.setSurfaceTextureListener(MainActivity.this);
在Mainactivity中实现相应的接口
2.在TexTureView的回掉函数onSurfaceTextureAvailable中执行视屏的显示。
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {startRending(surface);}
if (url.toLowerCase().startsWith("rtmp://")){Toast.makeText(this, "地址出错", Toast.LENGTH_SHORT).show();}else{/**本Key为3个月临时授权License,如需商业使用或者更改applicationId,请邮件至support@easydarwin.org申请此产品的授权。*/mEasyRTSPClient = new EasyRTSPClient(MainActivity.this, "79393674363536526D3430417A41645A7076677A532B6473615768686279356A6232307562586C686348427361574E6864476C76626A4B45567778576F50394C34456468646D6C754A6B4A68596D397A595541794D4445325257467A65555268636E6470626C526C5957316C59584E35", surface, mResultReceiver);boolean autoRecord = PreferenceManager.getDefaultSharedPreferences(MainActivity.this).getBoolean("auto_record", false);File f = new File(MyApplication.sMoviePath);f.mkdirs();try {mEasyRTSPClient.start(url, 1, RTSPClient.EASY_SDK_VIDEO_FRAME_FLAG | RTSPClient.EASY_SDK_AUDIO_FRAME_FLAG, "", "", autoRecord ? new File(f, new SimpleDateFormat("yy-MM-dd HH:mm:ss").format(new Date()) + ".mp4").getPath() : null);}catch (Exception e){e.printStackTrace();Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();return;}
//这里我是把dome里的拷过来了,这里主要是EasyRTSPClient这个类,可以去看看他的源码。看他的构造函数的参数
//2--需要一个授权的id,上面介绍了获取的办法
//3--显示视频的控件
//4--自己可以百度去看看 http://blog.csdn.net/liuyingcan/article/details/50673317
视频停止
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {stopRending();return true;}//视频停止显示private void stopRending() {if (mEasyRTSPClient != null) {mEasyRTSPClient.stop();mEasyRTSPClient = null;}}
android集成EasyPlayer播放器播放实时流媒体视屏相关推荐
- Android、iOS平台RTMP/RTSP播放器实现实时音量调节
介绍移动端RTMP.RTSP播放器实时音量调节之前,我们之前也写过,为什么windows播放端加这样的接口,windows端播放器在多窗口大屏显示的场景下尤其需要,尽管我们老早就有了实时静音接口,相对 ...
- Android多媒体学习五:调用Android自带的播放器播放Audio
Android有其自带的播放器,我们可以使用隐式Intent来调用它:通过传入一个Action为ACTION_VIEW同时,指定Data为所要播放的Audio的Uri对象,并指定格式信息,则我们就可以 ...
- 为potplayer播放器添加实时中文字幕
为potplayer播放器添加实时中文字幕 大家好,现在的国外视频引进至国内后,也不再去进行中文配音了,而是直接出中文字幕.而那些不是通过正规途径进入中国的电影.视频,只有英文或者韩文或者其他国家的字 ...
- Android使用饺子播放器播放服务器端的视频
在之前的毕设项目中需要做视频播放功能,使用了第三方播放器饺子播放器,感觉非常方便. 网上也有很多关于饺子播放器的用法. 首先在build.gradle中添加依赖 implementation 'cn. ...
- 解决Android7.0系统 调用系统相机、系统播放器播放视频、切图兼容问题,报异常android.os.FileUriExposedException
原文地址:https://blog.csdn.net/msn465780/article/details/59058088?locationNum=8&fps=1 Android7.0以前获取 ...
- 使用vlc播放器做rtsp流媒体服务器
可参考: 使用vlc播放器播放rtsp视频 web网页中使用vlc插件播放相机rtsp流视频 使用vlc进行二次开发做自己的播放器 首先需要安装vlc播放器,下载及安装步骤略 使用vlc播放器做rts ...
- Android 11.0 当安装多个播放器时,设置默认播放器播放歌曲
目录 1.概述 2.当安装多个播放器时,设置默认播放器播放歌曲的核心类
- Android 10.0 当安装多个播放器时,设置默认播放器播放歌曲
目录 1.概述 2.安装多个播放器时,设置默认播放器播放歌曲的核心代码
- react项目中使用阿里播放器播放视频,包括切换视频,播放定时跳转(兼容ios和andro),播放完成
react项目中使用阿里播放器播放视频,包括切换视频,播放定时跳转(兼容ios和andro),播放完成 1.index.html引入阿里播放器的cdn <link rel="style ...
最新文章
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
- KindEditor编辑器在ASP.NET中的使用
- 一篇文章教你弄懂 SpringMvc中的HandlerInterceptor
- golang连接mysql操作示例增删改查(已经测试)
- yntaxError: Non-UTF-8 code starting with ‘\xe6‘ in file
- 深入浅出python机器学习——K最邻近算法(K-Nearest Neighbors,KNN)
- ESL3.6 几种线性回归方法比较学习笔记(含协方差相关系数概念)
- 英语——长难句分析及技巧
- 对接熊迈SDK工作记录之集成准备
- python构建聊天机器人之录制声音保存为音频文件(利用pyaudio进行录音)
- 使用webots的MPC的移动机器人轨迹跟踪控制
- 苹果手机数据能恢复吗
- TypeScript里的工具类型Partial的理解用法
- Axure RP9 安装教程
- Batch Normalization (BN层)-----批归一化
- ios android 占有率,Android全球占有率28.4% 超iOS一倍
- cfa三级真题和mock_CFA考试历年官方mock题从哪里找?怎么下载?
- RHUB(美国)网络会议 合作伙伴反馈
- Firefox Chrome访问6666 556 6667 87等特定端口
- Docker快速部署Yearning
热门文章
- Python报错UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position 1919: illegal mult
- C语言冒泡法输出成绩与学号,C语言:根据成绩进行冒泡排序,学号也得跟着动,输出的结果...
- [OHIF-Viewers]医疗数字阅片-医学影像-REACT-React.createRef()-Refs and the DOM关于回调 refs 的说明...
- 1024程序员节 技术对抗赛 算法与安全答题 标准答案
- Java、Scala使用tan和arctan求斜率和倾斜角
- 揭秘小程序上线不到一周,每天2万销售额,究竟怎么做到的?
- spring cloud 资源服务器授权配置
- 怎么用计算机测出来体脂,如何简单测算出自己的体脂率?
- 基于Java+Springmvc+vue+element员工信息管理系统详细设计
- PTA-天梯赛-7-8 GOGO冲