Android 获取网络视频的所有帧数图

本文详细探讨了如何在Android平台上利用MediaMetadataRetriever类进行网络视频的处理,重点在于获取视频的所有帧数图,同时提醒该操作可能涉及耗时任务的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever();
                metadataRetriever.setDataSource("http://tpl1.msxxapp.com/tpl/d54ca3e49037248060b7103d4cad2ce2.mp4", new HashMap<>());

                String duration = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
                Log.d("帧数图", "duration = " + duration);
                int durationMs = Integer.parseInt(duration);

                //每秒取一次
                for (int i = 0; i < durationMs; i += 1000) {
                    long start = System.nanoTime();
                    Log.d("帧数图", "getFrameAtTime time = " + i);
                    //这里传入的是ms
                    Bitmap frameAtIndex = metadataRetriever.getFrameAtTime(i * 1000);
                    Bitmap frame = Bitmap.createScaledBitmap(frameAtIndex, frameAtIndex.getWidth() / 8, frameAtIndex.getHeight() / 8, false);
                    list.add(frame);
                    Log.d("帧数图", "run: " + frame.toString());
                    Log.d("哈哈哈哈啊", "onCreate: " + list.size());
                    frameAtIndex.recycle();
                    long end = System.nanoTime();
                    long cost = end - start;
                    Log.d("帧数图", "cost time in millis = " + (cost * 1f / 1000000));
                    Log.d("哈哈哈哈啊1", "onCreate: " + list.size());
//                    if (i / 1000 == durationMs / 1000) {
//                        Log.d("哈哈哈哈啊2", "onCreate: " + list.size());
//                        FrameNumberAdapter frameNumberAdapter = new FrameNumberAdapter(DubActivity.this, list);
//                        listThumbDub.setAdapter(frameNumberAdapter);
//                    }
                }
                metadataRetriever.release();
                handler.sendEmptyMessage(0);
            }

 特别注意:MediaMetadataRetriever使用需要进行耗时操作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值