如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片
来源:互联网 发布:ajaxupload.js 编辑:程序博客网 时间:2024/06/05 13:01
在项目开发的时候,有可能会有这样的一种需求:有一段视频需要展示给用户,在界面上先展示视频上的某一帧图片,用户点击的时候再去获取视频资源进行播放。这时,服务器会先给我们返回视频的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; }
阅读全文
0 0
- 如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片
- 如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片
- 获取本地视频,网络视频的第一帧图片,使之显示出来
- 获取本地视频,网络视频的第一帧图片,使之显示出来
- 获取本地视频缩略图,既第一帧图片的方法
- Android 视频开发中如何通过url或者本地视频文件路径获得视频的第一帧图片
- 获取视频的第一帧缩略图(本地视频、网络视频)
- 获取url或本地视频的第一帧
- iOS 获取视频第一帧图片
- iOS_获取视频第一帧图片
- iOS获取视频第一帧图片
- Android 获取视频(本地、网络)的第一关键帧
- iOS开发之视频根据url获取第一帧图片,获取任一帧图片
- 视频根据url获取第一帧图片,获取任一帧图片
- iOS获取视频的第一帧图片thumbnailImage
- 通过 ffmpeg 获取视频第一帧(指定时间)图片
- 通过 ffmpeg 获取视频第一帧(指定时间)图片
- 获取视频第一帧
- Tornado框架知识系列之三
- MySQL中多表连接查询(内连接、外连接)的使用
- Spark架构
- pyspider安装配置
- tomcat开机自启动
- 如何获取网络视频(或者说后台返回视频URL)第一帧图片以及获取本地视频的第一帧图片
- 设计模式之装饰着模式
- UE4添加C++类 编译失败 解决办法
- HDU 1087 Super Jumping! Jumping! Jumping!
- Linux下gcc编译生成动态链接库*.so文件并调用它
- opencv 形态学处理——膨胀
- 给Java新手的一些建议----Java知识点归纳(Java基础部分)
- Codeforces 835E E. The penguin's game 交互题 多猪试毒
- Android软件开发之获取通讯录联系人信息