如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片
在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户点击的时候再去获取视频资源进行播放。这时,服务器会先给我们返回视频的url,这个时候就需要通过视频url去获取第一帧图片进行展示了!具体代码实现如下:
- 获取网络视频第一帧图片代码:
/** * 服务器返回url,通过url去获取视频的第一帧 * Android 原生给我们提供了一个MediaMetadataRetriever类* 提供了获取url视频第一帧的方法,返回Bitmap对象* * @param videoUrl * @return */ public static Bitmap getNetVideoBitmap(String videoUrl) { Bitmap bitmap = null; MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { //根据url获取缩略图 retriever.setDataSource(videoUrl, new HashMap()); //获得第一帧图片 bitmap = retriever.getFrameAtTime(); } catch (IllegalArgumentException e) { e.printStackTrace(); } finally { retriever.release(); } return bitmap; }
其中函数getFrameAtTime()有其他重载函数,该函数会随机选择一帧抓取,如果想要指定具体时间的缩略图,可以用函数getFrameAtTime(long timeUs), getFrameAtTime(long timeUs, int option),具体如何使用可以查doc。
当用户点击播放过该视频后,这时候一般都会对该视频进行缓存操作,下次用户播放的时候,直接获取本地视频播放即可,不需要再去请求服务器获取资源,这个时候我们就可以获取本地视频的第一帧图片进行展示
- 获取本地视频第一帧图片代码:
/** * 获取本地视频的第一帧 * * @param localPath * @return */ public static Bitmap getLocalVideoBitmap(String localPath) { Bitmap bitmap = null; MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { //根据文件路径获取缩略图 retriever.setDataSource(localPath); //获得第一帧图片 bitmap = retriever.getFrameAtTime(); } catch (IllegalArgumentException e) { e.printStackTrace(); } finally { retriever.release(); } return bitmap; }
如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片相关推荐
- js vue将后台返回的url图片地址以图片形式保存到本地
直接将下面函数复制到 项目中,传入要保存的 url, 以及要设置的文件名字,即可. // 现在 html中 定义一个容器,如 <div id="qrcode">< ...
- android获取网络时区_Android获取系统时间以及网络时间
项目开发中,很多时候会用到android的时间,罗列一下获取的时间的方式,和大家共同学习进步 一.获取系统时间 1.通过Calendar类来获取系统当前的时间 Calendar calendar = ...
- 获取网络时间并刷新本地时间(源码2)
因为上次那个获取网络时间失效了(使用的是37端口),获取网络时间并刷新本地时间(源码1) 所以网上又找了一份代码,使用的是123端口,虽然没有测试成功,这里也做下记录,估计是本机环境问题,过两天再进行 ...
- Android实现本地视频+录制视频+视频压缩上传
今天研究了一下视频上传的处理,还包括研究可以视频压缩,本地视频.录制视频上传.本地视频获取需要适配手机,这个建议自己获取本地视频列表自己实现.不然就会出现路径找不到返回 null 好东西都是要分享给大 ...
- android 4.4 获取图片主色调,Android Lollipop:使用Palette抽取图片主色调
使用Palette抽取Bitmap主色调 关于Palette 一些Support库随着Android Lollipop的发布而诞生了,其中就有Palette.这个库可以让你很轻松地从一幅图中抽取特征颜 ...
- 分享本地视频到微信好友和QQ好友
最近在做一个项目,需要分享本地视频到微信好友和QQ好友,这里总结一下分享本地视频的方法. 一.分享到微信 刚开始分享到微信时,没有自己申请appid,而是使用了之前一个项目的appid,并修改包名,改 ...
- 腾讯视频如何设置关闭本地视频后自动打开主界
1.点击主页面右上角的三条横杠 腾讯视频如何设置关闭本地视频后自动打开主界面 2.点击[设置] 腾讯视频如何设置关闭本地视频后自动打开主界面 3.点击左侧的[高级设置] 腾讯视频如何设置关闭本地视频后 ...
- 【OpenCV】获得视频的帧数、FPS以及按帧数将图片保存到本地
文章目录 视频操作 获得视频的帧数 获得视频的FPS 按帧数将图片保存到本地 视频操作 获得视频的帧数 import os import cv2video_cap = cv2.VideoCapture ...
- android获取网络视频缩略图,Android 获取视频(本地和网络)缩略图的解决方案
在Android 开发视频的时候,通常都需要显示视频列表,而视频列表通常都有一张视频缩略图,那么它是怎么获取的呢, 关于网络视频的缩略图的实现方案主要有两种: 1.后台返回视频时顺便连缩略图的路径都返 ...
最新文章
- 用VS Code直接浏览GitHub代码 | 12.1K星
- 一步一步学Silverlight 2系列(6):键盘事件处理
- 从Linux终端管理进程:10个你必须知道的命令
- 面试准备每日系列:计算机底层之并发编程(二)缓存行、一致性协议、伪共享、disruptor、CAS等待
- 看了一个大牛的博客,发现了一个很好的文章-初学PHP进
- redis数据类型之Set
- 工作之余,别忘了生活。
- 大白话C++:新手入门教程(附源码及详解、视频课程资料推荐)
- python助教_助教工作:关于如何使用python+excel快捷生成千帆竞发图
- tornado, twister, cyclone,Typhoon,hurricane…到底如何区别?
- Python基础语言学习 day 6 ——列表的遍历、增删改、相关操作、函数和方法
- 统计检验问题:Friedman Test,Nemenyi test检验和Bonferroni-Dunn test检验
- 中文编程书籍资料一览表
- MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置
- LeetCode 417. 太平洋大西洋水流问题 JAVA dfs
- autobank渗流分析计算教程_AutoBank免费版
- 《痞子衡嵌入式半月刊》 第 57 期
- ES系统封装教程 高级进阶版 提供Wind7,xp系统下载 (by 星空武哥)
- 【区块链技术工坊27期实录】李庆华:HPB底层P2P网络实践
- RoBERTa 详解