Skip to content

Commit 71c24f0

Browse files
committed
the video file will exist in the asset directory
Signed-off-by: Umair Khan <[email protected]>
1 parent 0102a15 commit 71c24f0

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

src/in/omerjerk/processing/video/android/Movie.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package in.omerjerk.processing.video.android;
22

3+
import java.io.IOException;
4+
35
import in.omerjerk.processing.video.android.callbacks.MediaPlayerHandlerCallback;
6+
import android.content.res.AssetFileDescriptor;
47
import android.media.MediaMetadataRetriever;
58
import android.media.MediaPlayer;
6-
import android.net.Uri;
79
import android.os.Handler;
810
import android.os.HandlerThread;
911
import android.os.Looper;
@@ -20,17 +22,23 @@ public class Movie extends VideoBase implements MediaPlayerHandlerCallback {
2022

2123
public Movie(PApplet parent, String fileName) {
2224
super(parent);
23-
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
24-
metaRetriever.setDataSource(fileName);
25-
String height = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
26-
String width = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
27-
init(Integer.valueOf(width), Integer.valueOf(height), ARGB);
25+
AssetFileDescriptor afd = null;
26+
try {
27+
afd = activity.getAssets().openFd(fileName);
28+
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
29+
metaRetriever.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
30+
String height = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT);
31+
String width = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH);
32+
init(Integer.valueOf(width), Integer.valueOf(height), ARGB);
33+
} catch (IOException e) {
34+
e.printStackTrace();
35+
}
2836

2937
HandlerThread backgroundThread = new HandlerThread("MediaPlayer");
3038
backgroundThread.start();
3139
handler = new MediaPlayerHandler(backgroundThread.getLooper());
3240
handler.setCallback(this);
33-
handler.sendMessage(handler.obtainMessage(MediaPlayerHandler.MSG_INIT_PLAYER, fileName));
41+
handler.sendMessage(handler.obtainMessage(MediaPlayerHandler.MSG_INIT_PLAYER, afd));
3442
}
3543

3644
public void play() {
@@ -67,8 +75,8 @@ public void setCallback (MediaPlayerHandlerCallback cb) {
6775
public void handleMessage(Message msg) {
6876
switch (msg.what) {
6977
case MSG_INIT_PLAYER:
70-
String fileName = (String) msg.obj;
71-
callback.initPlayer(fileName);
78+
AssetFileDescriptor afd = (AssetFileDescriptor) msg.obj;
79+
callback.initPlayer(afd);
7280
break;
7381
case MSG_START_PLAYER:
7482
callback.startPlayer();
@@ -80,10 +88,10 @@ public void handleMessage(Message msg) {
8088
}
8189

8290
@Override
83-
public void initPlayer(String fileName) {
91+
public void initPlayer(AssetFileDescriptor afd) {
8492
player = new MediaPlayer();
8593
try {
86-
player.setDataSource(activity, Uri.parse(fileName));
94+
player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
8795
player.setSurface(new Surface(mSurfaceTexture));
8896
player.setLooping(looping);
8997
player.prepare();
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package in.omerjerk.processing.video.android.callbacks;
22

3+
import android.content.res.AssetFileDescriptor;
4+
35
public interface MediaPlayerHandlerCallback {
46
public void startPlayer();
5-
public void initPlayer(String fileName);
7+
public void initPlayer(AssetFileDescriptor fileName);
68
}

0 commit comments

Comments
 (0)