在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户点击的时候再去获取视频资源进行播放。这时,服务器会先给我们返回视频的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)第一帧图片以及获取本地视频的第一帧图片相关推荐

  1. js vue将后台返回的url图片地址以图片形式保存到本地

    直接将下面函数复制到 项目中,传入要保存的 url, 以及要设置的文件名字,即可. // 现在 html中 定义一个容器,如 <div id="qrcode">< ...

  2. android获取网络时区_Android获取系统时间以及网络时间

    项目开发中,很多时候会用到android的时间,罗列一下获取的时间的方式,和大家共同学习进步 一.获取系统时间 1.通过Calendar类来获取系统当前的时间 Calendar calendar = ...

  3. 获取网络时间并刷新本地时间(源码2)

    因为上次那个获取网络时间失效了(使用的是37端口),获取网络时间并刷新本地时间(源码1) 所以网上又找了一份代码,使用的是123端口,虽然没有测试成功,这里也做下记录,估计是本机环境问题,过两天再进行 ...

  4. Android实现本地视频+录制视频+视频压缩上传

    今天研究了一下视频上传的处理,还包括研究可以视频压缩,本地视频.录制视频上传.本地视频获取需要适配手机,这个建议自己获取本地视频列表自己实现.不然就会出现路径找不到返回 null 好东西都是要分享给大 ...

  5. android 4.4 获取图片主色调,Android Lollipop:使用Palette抽取图片主色调

    使用Palette抽取Bitmap主色调 关于Palette 一些Support库随着Android Lollipop的发布而诞生了,其中就有Palette.这个库可以让你很轻松地从一幅图中抽取特征颜 ...

  6. 分享本地视频到微信好友和QQ好友

    最近在做一个项目,需要分享本地视频到微信好友和QQ好友,这里总结一下分享本地视频的方法. 一.分享到微信 刚开始分享到微信时,没有自己申请appid,而是使用了之前一个项目的appid,并修改包名,改 ...

  7. 腾讯视频如何设置关闭本地视频后自动打开主界

    1.点击主页面右上角的三条横杠 腾讯视频如何设置关闭本地视频后自动打开主界面 2.点击[设置] 腾讯视频如何设置关闭本地视频后自动打开主界面 3.点击左侧的[高级设置] 腾讯视频如何设置关闭本地视频后 ...

  8. 【OpenCV】获得视频的帧数、FPS以及按帧数将图片保存到本地

    文章目录 视频操作 获得视频的帧数 获得视频的FPS 按帧数将图片保存到本地 视频操作 获得视频的帧数 import os import cv2video_cap = cv2.VideoCapture ...

  9. android获取网络视频缩略图,Android 获取视频(本地和网络)缩略图的解决方案

    在Android 开发视频的时候,通常都需要显示视频列表,而视频列表通常都有一张视频缩略图,那么它是怎么获取的呢, 关于网络视频的缩略图的实现方案主要有两种: 1.后台返回视频时顺便连缩略图的路径都返 ...

最新文章

  1. 用VS Code直接浏览GitHub代码 | 12.1K星
  2. 一步一步学Silverlight 2系列(6):键盘事件处理
  3. 从Linux终端管理进程:10个你必须知道的命令
  4. 面试准备每日系列:计算机底层之并发编程(二)缓存行、一致性协议、伪共享、disruptor、CAS等待
  5. 看了一个大牛的博客,发现了一个很好的文章-初学PHP进
  6. redis数据类型之Set
  7. 工作之余,别忘了生活。
  8. 大白话C++:新手入门教程(附源码及详解、视频课程资料推荐)
  9. python助教_助教工作:关于如何使用python+excel快捷生成千帆竞发图
  10. tornado, twister, cyclone,Typhoon,hurricane…到底如何区别?
  11. Python基础语言学习 day 6 ——列表的遍历、增删改、相关操作、函数和方法
  12. 统计检验问题:Friedman Test,Nemenyi test检验和Bonferroni-Dunn test检验
  13. 中文编程书籍资料一览表
  14. MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置
  15. LeetCode 417. 太平洋大西洋水流问题 JAVA dfs
  16. autobank渗流分析计算教程_AutoBank免费版
  17. 《痞子衡嵌入式半月刊》 第 57 期
  18. ES系统封装教程 高级进阶版 提供Wind7,xp系统下载 (by 星空武哥)
  19. 【区块链技术工坊27期实录】李庆华:HPB底层P2P网络实践
  20. RoBERTa 详解

热门文章

  1. Java按照固定pdf模板生成pdf文件——itext
  2. Perl教程_编程入门自学教程_菜鸟教程-免费教程分享
  3. 2022 CSDN 客服年终总结
  4. 物理服务器、虚拟机、虚拟服务器(VPS)、云服务器几种概念解析
  5. C语言经典100例c42 去除字符串中的空格
  6. 刷题术语简称:OJ、AC、WA、TLE、OLE、MLE、RE、PE、CE分别代表的意思
  7. 当前Java程序员岗位是否已经饱和了?你大概是在逗我!
  8. openmv车辆计数程序
  9. 一个 Crash 引发的血案
  10. MATLAB神经网络工具箱中感知器权值和阈值的学习函数learnp