java - MediaMetadataRetriever.setDataSource() 上的 IllegalArgumentException
问题描述
我正在尝试从视频文件中获取几帧。并进入下面java.lang.IllegalArgumentException
的setDataSource
行。
String root = Environment.getExternalStorageDirectory().getAbsolutePath()+"/";
String path=root + "master" + File.separator +"master.mp4";
Uri videoFileUri=Uri.parse(path);
File myFile = new File(path);
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(myFile.getAbsolutePath()); //getting error here
ArrayList<Bitmap> rev=new ArrayList<Bitmap>();
//Create a new Media Player
MediaPlayer mp = MediaPlayer.create(getBaseContext(), videoFileUri);
int millis = mp.getDuration();
for(int i=0;i<millis;i+=100){
Bitmap bitmap=retriever.getFrameAtTime(i,OPTION_CLOSEST_SYNC);
rev.add(bitmap);}
错误日志
E/AndroidRuntime: FATAL EXCEPTION: main
Process: in.mm.video, PID: 11576
java.lang.RuntimeException: Unable to start activity ComponentInfo{in.mm.video/in.mm.video.RecognizeActivity}: java.lang.IllegalArgumentException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.IllegalArgumentException
at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:71)
at in.mm.video.RecognizeActivity.onCreate(RecognizeActivity.java:178)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Application terminated.
解决方案
推荐阅读
- api - 如何使用 express 将单个参数的多个值传递到 javascript 中的 API url?
- javascript - 如何使用javascript从文本框中提取所有HTML标签的数组
- python - 将列复制为熊猫数据框中的附加列的问题
- c# - 如何将 DateTime 格式化为 yyyy-MM-dd kk:mm:ss(01-24 小时)?
- sql - 根据当前时间点的部门对员工历史记录表进行不同计数
- javascript - 循环结果由空格分隔
- java - 如何使用 java 添加自动增量值?
- python - 库存系统添加新对象而不是数量增加 1
- spring - 如何防止调用 ApplicationListener
在使用 oauth2 在 Spring Security 中的每次 api 调用之后? - javascript - 防止输入边距在缩放时增长