- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的代码只返回(test.gif)第一帧,并用5个相同的帧(视频第一帧)制作一个gif。
我在 StackOverflow 中阅读了大多数问题,但我无法弄清楚是什么原因导致了这个问题。
此外,根据一些建议,我尝试将 mmRetriever.getFrameAtTime
与 MediaMetadataRetriever.OPTION_CLOSEST
选项一起使用,但没有成功。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Uri vid = data.getData();
videoPath = getPath(vid);
MediaMetadataRetriever mmRetriever = new MediaMetadataRetriever();
mmRetriever.setDataSource(videoPath);
String METADATA_KEY_DURATION = mmRetriever
.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
AnimatedGifEncoder encoder = new AnimatedGifEncoder();
encoder.setDelay(30);
encoder.start(bos);
int max = (int) Long.parseLong(METADATA_KEY_DURATION);
Log.i("max",String.valueOf(max));
for (int i=1000000;i<max*1000;i+=1000000) {
Log.i("i",String.valueOf(i));
Bitmap bitmap = mmRetriever.getFrameAtTime(i,MediaMetadataRetriever.OPTION_CLOSEST);
encoder.addFrame(bitmap);
}
encoder.finish();
try {
String filepath = Environment.getExternalStorageDirectory()
+ File.separator + "test.gif";
FileOutputStream outStream = new FileOutputStream(filepath);
outStream.write(bos.toByteArray());
outStream.close();
GifAnimationDrawable big = new GifAnimationDrawable(
new FileInputStream(filepath));
imageview.setImageDrawable(big);
big.setVisible(true, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
日志返回最大值约5000
最佳答案
来自 this来源:
MediaMetadataRetriever的 getFrameAt 方法需要微秒(1/1000000 秒)而不是毫秒,因此在您的情况下它总是向下舍入到第一帧。
关于android - MediaMetadataRetriever getFrameAtTime 仅返回第一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26367706/
我正在尝试从相机捕获的视频文件中检索帧。我写了一个函数来这样做,我在不同时间的循环中使用它,每 100000(微秒)接收帧: public static Bitmap getVideoFrame(lo
我知道这个问题是重复的,但请给出一些解决方案。 Android FFmpegMediaMetadataRetriever.getFrameAtTime() 进展缓慢,我的 fragment 需要将近
我编写了一个简单的 Android 应用程序,它使用 MediaMetadataRetriver 类来获取帧。它工作正常,只是我意识到它会跳帧。 我要解码的视频 fragment 是用手机摄像头拍摄的
下面的代码只返回(test.gif)第一帧,并用5个相同的帧(视频第一帧)制作一个gif。 我在 StackOverflow 中阅读了大多数问题,但我无法弄清楚是什么原因导致了这个问题。 此外,根据一
我已使用 MetadataRetriever 从视频中提取帧,并将所有图像存储在 ArrayList 中.我想将它们全部存储在 SD 卡上(仅用于测试目的)。 但是当我从模拟器中拉出一个文件夹并查看保
我正在开发一个应用程序,该应用程序最终将以 200 毫秒的间隔将视频切割成帧。 该应用程序可以工作,您选择一个视频,该应用程序会将其切割成存储在设备上的位图。问题是,FFmpegMediaMetaRe
我正在尝试获取视频的帧,所以我像这样使用 MediaMetadataRetriever.getFrameAtTime(): Uri directorio = Uri.parse("androi
我有一个循环,我试图每 1/10 秒从视频中提取一帧。但是在 19 帧(视频的 1.9 秒)之后,我在 Logcat 上收到以下错误: 01-22 11:59:15.498: E/OMXCodec(3
我正在使用 MediaMetadataRetriever 按视频帧创建缩略图,但我在 Logcat 中收到此消息: E/MediaMetadataRetrieverJNI(14060): getFra
我是一名优秀的程序员,十分优秀!