MediaMetadataRetriever setDataSource抛出IllegalArgumentException [英] MediaMetadataRetriever setDataSource throws IllegalArgumentException
问题描述
我正在尝试使用此类来获取远程视频的大小,如果视频是远程的,我会收到IllegalArgumentException.
I'm trying to get the size of a remote video using this class and i'm getting IllegalArgumentException if the video is remote.
视频是存储在一个服务器中的mp4 ...
the video is an mp4 stored in one server...
如果我使用mediaplayer播放视频,则视频可以正确播放,但是如果我尝试这样做,则会出现错误:
the video plays correctly if i play it with mediaplayer, but it gives the error if i try to do this:
try {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
Bitmap bmp = null;
retriever.setDataSource(context, uri);
bmp = retriever.getFrameAtTime();
videoHeight = (int) (bmp.getHeight()*((float)getIntWidth()/bmp.getWidth()));
} catch (Exception e) {
e.printStackTrace();
}
此行引发错误:
retriever.setDataSource(context, uri);
并且uri包含Uri.parse("http://www.myweb.com/myvideo.mp4");
代码有什么问题?
12-19 13:38:08.610: W/System.err(13333): java.lang.IllegalArgumentException
12-19 13:38:08.611: W/System.err(13333): at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:175)
推荐答案
也许您遇到了这个错误.如果是这样,请尝试:
Maybe you are running into this bug. If so try:
try {
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
Bitmap bmp = null;
retriever.setDataSource("http://www.myweb.com/myvideo.mp4", new HashMap<String, String>());
bmp = retriever.getFrameAtTime();
videoHeight = (int) (bmp.getHeight()*((float)getIntWidth()/bmp.getWidth()));
} catch (Exception e) {
e.printStackTrace();
}
如果这不起作用,您可以随时尝试 FFmpegMediaMetadataRetriever :
If that doesn't work you can always try FFmpegMediaMetadataRetriever:
FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();
try {
Bitmap bmp = null;
retriever.setDataSource("http://www.myweb.com/myvideo.mp4"));
bmp = retriever.getFrameAtTime();
videoHeight = (int) (bmp.getHeight()*((float)getIntWidth()/bmp.getWidth()));
} catch (Exception e) {
e.printStackTrace();
}
retriever.release();
这篇关于MediaMetadataRetriever setDataSource抛出IllegalArgumentException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!