android 获取视频的帧

食源客 2014-05-09 05:04:39
先帖代码,源于网上。
String dataPath = Environment.getExternalStorageDirectory()+ "/testDemo.mp4";
//获取当前视频路径

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(dataPath);
// 取得视频的长度(单位为毫秒)
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
// 取得视频的长度(单位为秒)
int seconds = Integer.valueOf(time) / 1000;
//获得想要的帧数
int num = seconds*24;
// 得到每一秒时刻的bitmap比如第一秒,第二秒

for (int i = 1; i <=10; i++) {
Bitmap bitmap = retriever.getFrameAtTime(i*1000*1000,MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
String path = Environment.getExternalStorageDirectory()+"/Pictures"+ File.separator + i + ".jpg";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(path);
bitmap.compress(CompressFormat.JPEG, 80, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}


我给的MP4是一个10秒的视频。原先我是没秒获取一帧,但结果是:第一张是第二秒的帧,后面9张是第5秒的帧.。
然后我又尝试一秒获取24帧,即一共240张,参数换成了(i*1000*1000/24),循环240次。结果是:前48张是第二秒的帧,后面的240-48 张是第5秒的帧。。。。。
这。。。完全找不到逻辑。。。。郁闷死了。。。求大神解答啊。或者提供其他获取帧的方法。急急急!!!
...全文
2650 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28466741 2015-08-10
  • 打赏
  • 举报
回复
同样的代码,为什么我得到的一直都是同一帧的图片啊?楼主,求解
zhuixun_forever 2015-07-12
  • 打赏
  • 举报
回复
retriever.setDataSource(dataPath); lz,这一行显示IllegalArgumentException,求解
u010866923 2015-06-16
  • 打赏
  • 举报
回复
楼主,你的问题解决了吧。现在我遇到了跟你一样的问题,请你帮帮忙吧,急急急!!!
白云竹海 2015-05-29
  • 打赏
  • 举报
回复
楼主问题解决了吗?
c苏蔡 2015-03-23
  • 打赏
  • 举报
回复
LZ,问题是否解决?
iamsiu1 2014-11-07
  • 打赏
  • 举报
回复
同求。。图片老拿不正确时间到底怎么填写。
雷杰-- 2014-09-26
  • 打赏
  • 举报
回复
引用 6 楼 huxiaowei0506 的回复:
[quote=引用 4 楼 Crazy9599 的回复:] 楼主你那个获取关键帧的得到图片了么?为什么我的也是10秒的MP4的视频,用你的代码得不到图片呢?sd卡里只有文件夹。
请问你解决了么?我也是,获得的Bitmap一直是空……[/quote]我的问题差不多解决了,你的是空?有代码么
Shawn_Hu_LS 2014-09-18
  • 打赏
  • 举报
回复
引用 4 楼 Crazy9599 的回复:
楼主你那个获取关键帧的得到图片了么?为什么我的也是10秒的MP4的视频,用你的代码得不到图片呢?sd卡里只有文件夹。
请问你解决了么?我也是,获得的Bitmap一直是空……
cuckoochun 2014-09-12
  • 打赏
  • 举报
回复
lz 能看看你的demo吧 谢谢 764062915@qq.com
雷杰-- 2014-07-30
  • 打赏
  • 举报
回复
楼主你那个获取关键帧的得到图片了么?为什么我的也是10秒的MP4的视频,用你的代码得不到图片呢?sd卡里只有文件夹。
媒体盒子 2014-05-20
  • 打赏
  • 举报
回复
retriever.getFrameAtTime(i*1000*1000,MediaMetadataRetriever.OPTION_CLOSEST_SYNC); OPTION_CLOSEST_SYNC 改为OPTION_CLOSEST 试试 前者是得到最靠近的关键帧而后者不需要一定是关键帧
小林望北 2014-05-19
  • 打赏
  • 举报
回复
同求!!!我也完全搞不懂,烦死了

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧