gpt4 book ai didi

android - MediaMetadataRetriever setDataSource 抛出 IllegalArgumentException

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:17 25 4
gpt4 key购买 nike

我正在尝试使用此类获取远程视频的大小,如果视频是远程的,我将收到 IllegalArgumentException。

视频是存储在一台服务器上的mp4...

如果我用 mediaplayer 播放视频可以正常播放,但是如果我尝试这样做会出现错误:

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)

最佳答案

也许您遇到了 this漏洞。如果是这样尝试:

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 :

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();

关于android - MediaMetadataRetriever setDataSource 抛出 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27566480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com