EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)「建议收藏」

EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)「建议收藏」EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)在预览图片的时候,利用手势控制图片的缩放、平移,已经是智能手机时代最基本的操作。而对于视频,很少有播放器支持这样的操作。实际上,在观看视频的时候,我们可能会想观看某个区域的局部细节,需要把该区域放大来观看,EasyPlayer播放器基于这样的需求,提供了局部放大的功能。感谢github上开源库PhotoView,它在ImageView

大家好,又见面了,我是你们的朋友全栈君。

EasyPlayer实现视频的局部缩放、平移功能(类似快手视频)

在预览图片的时候,利用手势控制图片的缩放、平移,已经是智能手机时代最基本的操作。而对于视频,很少有播放器支持这样的操作。实际上,在观看视频的时候,我们可能会想观看某个区域的局部细节,需要把该区域放大来观看,EasyPlayer播放器基于这样的需求,提供了局部放大的功能。

感谢github上开源库PhotoView,它在ImageView上实现了缩放和平移。EasyPlayer的视频手势控制正是基于这个库来实现的。PhotoView,具体来说,先设置ImageView的ScaleType为MATRIX,然后根据触摸手势的位置坐标,计算出图片转换时相应的Matrix, 再调用ImageView的setImageMatrix方法,实现图片的缩放和平移。需要注意的是,这里手势控制的并不是ImageView本身,而是控制其显示内容。PhotoView的核心算法正是根据手势计算transformation matrix,这里并不打算具体介绍,大家有兴趣的可以直接阅读作者的源代码即可。

EasyPlayer的视频的渲染是通过TextureView来实现的,对我们安卓流媒体音视频的开发者来言,这个View——可在非UI线程进行渲染,也可以提供surface以供MediaCodec硬解码API在底层渲染——应该是很熟悉的了。恰好这个TextuewView也提供了一个setTransform方法,该方法接收一个matrix参数,使用该参数对当前的渲染内容进行转换,下面是官网对该方法的介绍。

Sets the transform to associate with this texture view. The specified transform applies to the underlying surface texture and does not affect the size or position of the view itself, only of its content.

可看出,这里的转换也是针对渲染的内容的转换,而非针对view本身。这样就也避免整个view tree频繁layout,效率非常高。有了这个方法,再加上PhotoView的matrix算法,再对视频进行缩放平移就十分简单了。仅需要在PhotoView里面将ImageView更换为TextureView,把setImageMatrix方法替换为setTransform即可!

效果如下图:

EasyPlayer的视频缩放与平移

EasyPlayer介绍

EasyPlayer RTSP是由EasyDarwin开源团队开发 者开发和维护的一个RTSP播放器项目,目前 支持Windows/Android/iOS,视频支持 H.264/H.265/MPEG4/MJPEG,音频支持 G711A/G711U/G726/AAC,支持RTSP over TCP/UDP切换,支持硬解码,是一套极佳的 RTSP播放组件!项目地址: https://github.com/EasyDarwin/EasyPlayer

您也可以升级到我们的EasyPlayer Pro全功能版 本,支持HTTP/RTSP/RTMP/HLS等多种流媒体协议!地址:
https://fir.im/EasyPlayerPro

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148227.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Flask 框架简单入门

    Flask 框架简单入门Flask框架介绍Flask框架什么是Flask?flask是一种基于python,并且依赖于Jinja2模板引擎(提供网页解析)和WerkzeugWSGI服务(pythonweb应用与web服务之间的接口)的一种微型框架。其中:Jinja2模板引擎:通俗来讲就是服务器接收到用户请求之后,将数据传入HTML文件中后,经过模板引擎的渲染将其呈现在网页中响应给用户。WerkzeugWSGI:pythonweb应用程序是一个被调用的对象,它无法直接与web服务器直接建立联系,所以WS

  • Java核心技术 卷1 基础知识「建议收藏」

    Java核心技术 卷1 基础知识「建议收藏」网站更多书籍点击进入>>CiCi岛下载电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍电子书下载(皮皮云盘-点击“普通下载”)购买正版封页编辑推荐Java领域*有影响力和价值的著作之一,与《Java编程思想》齐名,10余年全球畅销不衰,广受好评  根据JavaSE8全面更新,系统全面讲解Java语言的核心概念、语法…

  • matlab画圆的命令_matlab 如何画圆[通俗易懂]

    matlab画圆的命令_matlab 如何画圆[通俗易懂]展开全部symsab;ezplot((2-a).^2+(50-b).^2);为什么这样画只能出现一个点?636f707962616964757a686964616f31333335313161不能出现一个圆答:这时圆没有半径,r=0;symsab;ezplot((2-a).^2+(50-b).^2-1);解答:(MatlabR2013b)>>symsab&…

  • 发送邮件常见出错代码及简单解决方法

    发送邮件常见出错代码及简单解决方法

  • 打印机服务器显示未连接,解决win10打印机提示“无法连接打印机 后台处理程序未运行”的方法…

    打印机服务器显示未连接,解决win10打印机提示“无法连接打印机 后台处理程序未运行”的方法…如今大家在办公室中最常见的两样设备就数电脑和打印机了吧?办公人员对于打印机的使用是非常频繁的,每天都要使用。因此一旦打印机出现故障就会对我们的工作效率产生影响。近日有用户将电脑升级为win10之后发现自己的打印机不能正常的运行,每次点击打印之后就会出现:“无法连接到打印机,后台处理程序未运行”的提示。不知道你遇到这个故障的时候是如何解决的,若是还没有找到解决的方法可以使用下面的教程进行处理哦!方法…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号