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使用需要进行耗时操作