本文转自:http://blog.csdn.net/jyt0551/article/details/56063869

视频播放局部缩放、广角平移功能

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

EasyPlayer版本及源码下载

EasyPlayer Android:
https://github.com/EasyDarwin/EasyPlayer_Android

EasyPlayer其他版本:
https://github.com/EasyDarwin/EasyPlayer

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyPlayer实现视频播放局部缩放、广角平移功能(类似水滴直播,快手视频)相关推荐

  1. 图像浏览界面缩放和平移操作的实现

    前言:在开发程序时,可能需要将一张照片或影像显示在程序内部界面上.一般来说,界面的大小是固定的,不超过屏幕大小,但是我们需要显示的照片往往有不同的分辨率,并且一张照片的像素动不动就上千万,即使1920 ...

  2. 基于 MFC+Halcon 实现图像缩放、平移

    1.前言 在机器视觉系统中,图像处理是必不可少的一环.其中设置图像ROI(Region of interest)是基本操作,例如在模板匹配.直线拟合.圆拟合等功能中均会用到.当MFC对话框中的图片控件 ...

  3. Qt QWidget实现手势缩放和平移(二)

    上一篇文章中讲到了QWidget实现手势缩放和平移,通过QGestureEvent来捕捉手势操作,但是这种方式不一定能通用,比如像教学用的电子白板上,是红外触控感应,并不能通过QGestureEven ...

  4. Qt QWidget实现手势缩放和平移(一)

    由于项目要求,需要在QWidget中实现一个手势操作的功能,对图片进行放大/缩小/平移功能,并且还需要支持通过鼠标和键盘来实现该功能.其实这种功能在QGraphicsView中实现比较简单, 不过在Q ...

  5. Android 图片随着手势缩放,平移,并且支持多点触控

    效果图: 现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 想要做到图片支持多点触控,自由的进行 ...

  6. 解决D3.zoom()缩放和平移初始化时图形位置会跳跃的问题(v6版本)

    先奉上有问题的代码 //在页面中添加svg 支持拖拽和缩放var svg = d3.select("#body").append("svg").attr(&qu ...

  7. MFC+Halcon 真正实现图像缩放、平移

    网上看了几个MFC+Halcon对图像进行缩放.平移,发现很多是不完整或者没有真正实现这2个功能,所以自己去真正实现 实现平台:VS2010+HALCON18.11. 主要知识点: 1.halcon与 ...

  8. pdf编辑器如何缩放和平移文档

    很多人现在都比较熟悉PDF格式的文档,它是我们现在比较流行和常用的一种格式,想要快速有效的使用PDF格式文档,大家肯定都会利用一些软件的帮助,那么pdf编辑器如何缩放和平移文档?针对这个问题,小编就详 ...

  9. PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件

    目录 简介 使用场景 效果展示 ​编辑 开发环境 如何使用 demo源码及文件结构 类结构 相关方法 结语 简介 PhotoView是OpenAtom OpenHarmony(简称"Open ...

最新文章

  1. 一文带你弄懂普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法
  2. 收藏!5V转3.3V电平的19种方法技巧
  3. Stacktraces告诉了事实。 但事实并非如此。
  4. 分析一下mp4格式的trak -> mdia -> minf -> stbl -> stts、stsc 这两个box信息
  5. winxp上传文件到服务器,通过SQLServer的xp_cmdshell在服务器之间传送文件
  6. python实例 83,84
  7. 最快的组合数算法之Python实现
  8. 背包问题(nyoj106)
  9. order by关键字优化
  10. 会计基础第八章内容2
  11. golang 对象转json
  12. 最新发布!迅雷精简版 4.0.3 Mac中文版
  13. 如何把docx变为ass_电影字幕转Word教程
  14. Linux导出Excel图片水印中文乱码解决
  15. 原生JS实现点击按钮显示更多内容
  16. docker exec -it container1 /bin/bash 异常
  17. 《Unity 2018 AR与VR开发快速上手》简介
  18. Android文字广告(Textview上下滚动),使用TextSwitcher控件实现
  19. 安卓 解析软件包时出现问题
  20. 拼多多2020秋招【提前批】笔试

热门文章

  1. imx6 U盘更新的方法
  2. Elsevier期刊中,撰写Author Statement
  3. 京东移动端商场步骤来源黑马
  4. D-007 温度采集电路设计
  5. 广西科技大学鹿山学院计算机,广西科技大学鹿山学院--土木工程VR实训中心
  6. 响应式营销型H5建站平台系统源码 可视化后台+自助建站+搭建部署教程
  7. 大数据工程师必备技能
  8. 软件测试入门之测试模型
  9. 手机wps系统打印服务器,MK-WPS101w单USB无线打印服务器网页版教程
  10. DreamWeaver使用技巧(转)