Skip to content

Commit f8c3988

Browse files
author
Aman Choudhary
committed
Added snippet for Frame Extraction in Java.
1 parent 3325bce commit f8c3988

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

misc/src/main/java/com/example/snippets/InspectorModuleJavaSnippets.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,29 @@ public Bitmap extractFramePlatform(String mediaPath, Long frameTimeMs) {
163163
}
164164
// [END android_migration_frame_platform_java]
165165

166+
// [START android_migration_frame_media3_java]
167+
public void extractFrameMedia3(Context context, MediaItem mediaItem, Long frameTimeMs) {
168+
try (FrameExtractor frameExtractor = new FrameExtractor.Builder(context, mediaItem).build()) {
169+
ListenableFuture<FrameExtractor.Frame> frameFuture = frameExtractor.getFrame(frameTimeMs);
170+
171+
Executor executor = Executors.newSingleThreadExecutor();
172+
Futures.addCallback(frameFuture, new FutureCallback<Object>() {
173+
@Override
174+
public void onSuccess(Object frameObject) {
175+
FrameExtractor.Frame frame = (FrameExtractor.Frame) frameObject;
176+
long presentationTimeMs = frame.presentationTimeMs;
177+
Log.d(TAG, "Extracted frame at " + presentationTimeMs);
178+
}
179+
180+
@Override
181+
public void onFailure(@NonNull Throwable t) {
182+
Log.e(TAG, "Error extracting frame: " + t.getMessage());
183+
}
184+
}, executor);
185+
}
186+
}
187+
// [END android_migration_frame_media3_java]
188+
166189
// [START android_dev_extractor_media3_java]
167190
public void extractSamples(Context context, String mediaPath) {
168191
MediaExtractorCompat extractor = new MediaExtractorCompat(context);

misc/src/main/java/com/example/snippets/InspectorModuleKotlinSnippets.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class InspectorModuleKotlinSnippets {
9797
// [START android_dev_frame_media3_kotlin]
9898
suspend fun extractFrame(context: Context, mediaItem: MediaItem): Bitmap? {
9999
return try {
100-
// 1. Build the extractor and open a .use block.
100+
// 1. Build the frame extractor and open a .use block.
101101
// This automatically calls close() when the block finishes.
102102
FrameExtractor.Builder(context, mediaItem).build().use { extractor ->
103103
// 2. Extract the specific frame at the 5000ms (5-second) mark

0 commit comments

Comments
 (0)