android 视频截屏代码,Android 如何真正实现对网络视频进行截屏?

最近因为项目需要,要实现对网络视频任意帧进行截屏的功能,本着“拿来主义”的精神,开始在网上进行搜索,并进行测试,然而事实再一次告诉我,度娘不是万能的,

下面给出一个真实有效的方法,话不多说,直接上代码:

new Thread(new Runnable() {

@Override

public void run() {

MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();

Bitmap bitmap = null;

try {

HashMapparams = new HashMap<>();

params.put("Accept-Encoding", "gzip, deflate, sdch");

params.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");

mediaMetadataRetriever.setDataSource(mediaPlayer.getCurrentURI().toString(), params);

// 获取图片

bitmap = mediaMetadataRetriever.getFrameAtTime(currentPlayPosition, MediaMetadataRetriever.OPTION_NEXT_SYNC);

//将图片保持到相册中

saveBitmapToGallery(bitmap);

} catch (Exception e) {

e.printStackTrace();

} finally {

mediaMetadataRetriever.release();

if (bitmap != null) {

bitmap.recycle();

}

}

}

}).start();

PS: params 参数的由来,是一个血泪史,前面一直不知道该传什么,总是报:java.lang.RuntimeException: setDataSource failed: status = 0x80000000   这个坑爹的错误,后来想到的是抓取视频流,看看流的头是什么,将之设置进来,果断的就OK了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值