[转载]LivePlayer实现直播抓拍

 

对于一个裸的RTSP URL,存放在播放列表上略显单调与枯燥。大家可以看到LivePlayer在播放完视频后会保存一帧图片到列表上。那么这个功能是如何做到的呢?
如果自己实现解码的话,比如使用ffmpeg解码,这种情况下,将视频帧解码,再编码成jpeg保存下来,应该不是什么难事。相信大多数播放器都是这样处理的。但是如果我们用硬解码,很遗憾,安卓的硬解码并没有提供获取视频帧数据的功能,那又该如何实现呢?
有两种方法可以实现硬解码截屏

  • 单独创建截屏用的软解码器
  • 直接获取TextureView的内容并保存

第一种方法为常规的方法,没什么好说的。这里介绍下第二种方法。TextureView提供了一个getBitmap() 的方法,解释如下:

Returns a Bitmap representation of the content of the associated surface texture.

该方法提供了当前TextureView的渲染内容,作为一个Bitbmap对象返回。这样我们可以将这个Bitmap压缩成jpeg、png等格式并保存下来。Bitmap提供了compress 方法可以直接压缩。
这里需要注意的是调用时机,一定要在TextureView创建之后,确切的说是当前画面显示之后调用。否则您保存的快照可能是纯黑色的。

 

 

posted @ 2017-02-25 14:54  Kim的博客  阅读(444)  评论(0编辑  收藏  举报