easyplayer
文章平均质量分 66
「已注销」
这个作者很懒,什么都没留下…
展开
-
EasyClient android 编译arm64-v8a库遇到的坑
最近客户有需求,需要编译安卓上arm64的EasyClient库。本来想想,很easy的一个事情,结果遇到了坑了,折腾了好久。。。为了这个揪心低级失误,特来写篇博客记录下。通常在jni中,native层的句柄,一般会用java层的一个整形数值来映射,在接口调用时,把这个整形数据通过参数传递给底层,再转换成句柄。典型的例子就是MediaRecorder,大家可以参考其源码。这在32位系统中是没有任何原创 2016-12-11 21:05:53 · 2126 阅读 · 1 评论 -
BUG修复:EasyPlayer卡在首帧的bug修改
最近发现某些手机在运行EasyPlayer播放视频时,会停留在第一帧画面,虽然有码率预示着接收端没有问题,但是画面却卡着不动.一般来讲,这个现象有三种原因导致:没有接收到视频帧;解码器出错,只解出了第一帧图像;时间戳计算有误,导致长时间sleep;那逐一排查下.首先在媒体帧回调的地方下个断点,发现的确有视频帧接收到,并且视频帧最终正常地push到解码的队列当中了,说明第一个假设不成立.其次,原创 2017-07-22 11:33:03 · 631 阅读 · 0 评论 -
EasyPlayer支持x86和arm64 ABI
不久之前,EasyPlayer仅支持armeabi-v7a版本的abi——怎么说呢——通常可以满足需求了。因为安卓对于ABI的支持是做了兼容的,非arm架构的,可以通过某种方法兼容ARM架构的动态库。但是这样的确会损害一些性能。。本着精益求精的态度,我们打算再支持一些主流的CPU架构,典型的就是arm64和x86了。主要涉及到下面一些库的修改: - libEasyRTSPClient - lib原创 2017-08-15 23:29:20 · 913 阅读 · 0 评论 -
在EasyPlayerPro上实现一键平稳切换视频源的功能
经常会遇到这样的需求,播放器支持动态切换视频源.典型的应用就是在电视上切换频道了.市面上的播放器,在切换视频源时,可能需要将当前播放器release,再创建新的来进行加载,这样基本都存在闪一下黑屏的问题,个人感觉不是很好.那如何使得这两个视频平稳过度呢,比如在先一个视频未渲染之前,先停留在前一段视频的最后一帧画面(或许再加上个磨砂效果),会不会更好些?下面就简单介绍一下实现原理与方法.原理就是给视频原创 2017-09-16 16:37:51 · 919 阅读 · 0 评论 -
EasyPlayer支持H265视频解码
之前有博客介绍了android端H265硬解码的实现,见文章:http://blog.csdn.net/jyt0551/article/details/74502627 现在我们介绍一下在EasyPlayer端如何实现H265解码. 我们的策略是,在能支持硬解码的手机上使用硬解码,但是如果手机不支持,那也可以使用软解码来实现. 我们可以通过编译ffmpeg,使能hevc解码库,从而支持265的原创 2017-10-08 08:37:57 · 8866 阅读 · 0 评论 -
EasyPlayer延迟再优化策略
EasyPlayer延迟再优化策略EasyPlayer是一款专门针对RTSP协议进行过优化的播放器.其中两个我们引以为傲的的优点就是起播快和低延迟.最近我们遇到一些需求,其对延迟要求非常苛刻,于是我们再把代码捡起来,针对之前的播放策略进行再优化,果然又发现一些可以更改的地方,于是又对性能进行了一次压榨,再一次降低了延迟.主要优化内容如下:提高解码线程的优先级.一个不容忽视且容易被人忽略的事实,就是原创 2017-11-25 15:54:26 · 1420 阅读 · 0 评论 -
EasyPlayer显示模式设置
一般对于一个播放器,应该支持如下几种显示模式:等比例,最大化区域显示,不裁剪等比例,最大区域显示,裁剪拉伸显示,铺满全屏要实现这几种显示模式,其实只要对播放控件的布局进行些许调整即可.那EasyPlayer是怎么实现的呢? EasyPlayer使用一个PlayFragment进行视频播放.该类实现了一个setScaleType的方法来进行显示模式设定(或切换).public void se原创 2017-12-25 14:19:50 · 2333 阅读 · 0 评论 -
EasyPlayer视频源切换
EasyPlayer现在支持多视频源快速切换了,我们介绍一下是如何实现的. 这个需求通常应用在一个客户端需要查看多个视频源的情况,比如多个监控场景轮播.由于EasyPlayer的播放端已经放在Fragment了,这使得SDK层可以对好多应用层的代码做以封装,这样尽可能给开发者带来方便.比如,两个视频源切换的时候,只需要创建两个PlayFragment,然后对这两个Fragment进行显示切换,如代原创 2017-12-25 14:53:17 · 1855 阅读 · 0 评论 -
使用EasyPusher SDK进行便捷开发
基于EasyPusher sdk库工程(即library module)实现一个推送客户端非常简单便捷,因为sdk端已经将各种烦人的状态维护\错误检查\权限判定\UI同步等功能都实现了,开发者仅仅只需要实现若干接口即可.让我们看看如何实现一个Pusher吧!首先我们介绍一下Pusher sdk的封装用到了哪些技术.Android Architecture ComponentsAndroid ar原创 2017-12-25 19:50:01 · 2310 阅读 · 1 评论 -
EasyPlayerPro基于FFMPEG实现播放同时进行录像的功能
之前有博客专门介绍了EasyPlayer的本地录像的功能,简单来说,EasyPlayer是一款RTSP播放器,它将RTSP流里的音视频媒体帧解析出来,并用安卓系统提供的MediaMuxer类进行录像.那EasyPlayerPro可以这样实现吗?答案是不太现实,因为Pro支持绝大多数的流媒体协议,并不单单是RTSP协议,包括hTTP\RTSP\RTMP\HLS\FILE等格式都支持.要将这些数据分别解原创 2017-07-09 15:56:37 · 1871 阅读 · 1 评论 -
Android cookieManager & OKHttp以及EasyPlayerPro的媒体流的认证的实现
Android通过CookManager来管理Cookie。在发送\响应过一个HTTP请求之后, CookManager首先将响应里的Set-cookie字段parse成一个Cookie列表,并存储到本地;然后每次请求时,都从本地获取到这个Cookie列表,并将其组装成字符串(Cookie=”’),设到请求的header里。OKHttp发送请求时从本地读取Cookie并添加到请求的Header里原创 2017-07-08 10:37:48 · 936 阅读 · 0 评论 -
Android H.265硬解码&EasyPlayerPro
H.265编码算法作为新一代视频编码标准,在编码效果上有了很大的进步,同样清晰度的视频,265要比264有着更低的码率。关于265对比264的优越性,网上有更专业的文章来作分析,我也仅对这两种算法略知皮毛,因此不多阐述。基于其更高的压缩比,H.265适用于安防行业再合适不过了!因为安防行业每天都有着海量的视频数据在产生,同时需要实时传输、分析、存储…在带宽和存储成本依然昂贵的今天,我们极度需要更低的原创 2017-07-05 21:09:13 · 13842 阅读 · 7 评论 -
EasyPusher实现安卓Android手机直播推送同步录像功能(源码解析)
EasyPusher是一款非常棒的推送客户端。稳定、高效、低延迟,音视频同步等都特别好。装在安卓上可作为一款单兵设备来用。说到单兵,在项目中通常都需要边传边录的功能,因此后来EasyPusher也加入了该特性。该文章将结合代码来阐述下这个功能是如何实现的。EasyPusher在设置里增加了相关选项来方便开启和关闭本地录像功能,如下图所示,在设置里勾选后就可以推送的同时进行录像了。EasyPusher原创 2017-02-28 23:23:16 · 3211 阅读 · 0 评论 -
EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)
EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)在预览图片的时候,利用手势控制图片的缩放、平移,已经是智能手机时代最基本的操作。而对于视频,很少有播放器支持这样的操作。实际上,在观看视频的时候,我们可能会想观看某个区域的局部细节,需要把该区域放大来观看,EasyPlayer播放器基于这样的需求,提供了局部放大的功能。感谢github上开源库PhotoView,它在ImageView原创 2017-02-20 23:31:37 · 6945 阅读 · 0 评论 -
EasyPlayer实现播放时同步录像的功能
在之前一片博客《 EasyPusher实现安卓Android手机直播推送同步录像功能》(http://blog.csdn.net/jyt0551/article/details/58714595)中,我写到了EasyPusher推送的同时进行本地存储的功能,我们今天来介绍下EasyPlayer保存本地录像的功能。EasyPlayer同样是运用MediaMuxer进行录像的,与EasyPusher不同原创 2017-03-03 22:48:59 · 2835 阅读 · 0 评论 -
EasyPlayer声音自动停止、恢复,一键静音等功能
我们在开发播放器时,可能会需要静音或者降低音量的功能。比如说某款音乐播放器,当在后台播放时,如果此时有另外的系统通知声音发出,可能播放器会把音量降低,系统声音结束后,再调高;如果有来电了,播放器可能会把音乐暂停,等通话结束后再继续播放。还有,比方说我们在某个场合放个视频,不料音量很大,会引来很多目光(很尴尬),这时候可能我们需要一键静音的功能。那这些功能我们应该如何实现呢?Android播放声音的类原创 2017-03-08 00:01:37 · 4649 阅读 · 1 评论 -
EasyPlayer实现直播抓拍
对于一个裸的RTSP URL,存放在播放列表上略显单调与枯燥。大家可以看到EasyPlayer在播放完视频后会保存一帧图片到列表上。那么这个功能是如何做到的呢? 如果自己实现解码的话,比如使用ffmpeg解码,这种情况下,将视频帧解码,再编码成jpeg保存下来,应该不是什么难事。相信大多数播放器都是这样处理的。 H264格式的视频码流=>解码=>YUV格式的视频帧=>压缩=>jpeg=>保存到原创 2017-02-24 22:43:28 · 1231 阅读 · 0 评论 -
基于EasyPlayer和EasyPusher实现安卓平台的双向视频对讲
EasyPlayer是播放RTSP视频的屠龙刀,而EasyPusher又是推送RTSP的倚天剑,那将这两个神兵利器合起来,岂不是很厉害!基于这个思路,我们实现了一款视频对讲APP,称之为EasyVideoTalk。原创 2017-04-19 22:18:21 · 3002 阅读 · 1 评论 -
Android MediaMuxer录像(支持G711音频)
Android平台的MediaMuxer是个非常好的录像库,它能将H.264视频+AAC音频存储成.mp4格式的文件,而且稳定性、同步效果都非常好。MediaMuxer在安卓版的EasyPlayer和EasyPusher都用到了该方法来进行本地录像。作者也写过两篇针对性的博客来做介绍,参考: http://blog.csdn.net/jyt0551/article/details/60152344原创 2017-05-27 23:48:01 · 10646 阅读 · 1 评论 -
EasyPlayer Android 结构浅析
EasyPlayer 是一款小而美的RTSP安卓播放器。具有起搏快、延迟底、兼容性好的特点,而且支持抓拍、录像等实用功能。 好了,我就在此简单介绍一下播放器的代码结构吧!播放简单来说,EasyPlayer就是一个典型的生产者、消费者模式案例,如下图所示:首先,创建音视频消费者线程。线程刚开始,会等待音视频数据帧,根据音视频相关信息,初始化Decoder和Render。EasyPlayer的视频用M原创 2017-07-04 14:15:20 · 1102 阅读 · 0 评论 -
EasyPlayer支持YUV数据导出功能
我们可能会遇到这样的功能,播放一个视频的同时,再把这个视频推送出去,或者对视频数据进行智能分析等处理.这样我们就迫切需要得到视频的原始数据.基于这个需求,EasyPlayer增加了获取视频YUV数据的功能. 它的原理是这样的:Created with Raphaël 2.1.2EasyPlayerClientEasyPlayerClientDecoderDecoderYUVYUV读取媒体...原创 2018-02-10 10:44:01 · 785 阅读 · 2 评论