我正在尝试播放视频的持续时间,因为我正在创建自定义媒体控制器。当我使用默认的mediacontroller时似乎没有问题,因为它显示了所有细节。我想创建自己的mediacontroller只是为了添加一些图形在我的应用程序中 我无法使用以下任何代码获得在线视频的总持续时间。 有些专家请帮帮忙。
mVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
long duration1 = mp.getDuration();
Log.d("DURATION of media player", duration1+"");
Log.d("Videoview duration", mVideoView.getDuration()+"");
int msec = MediaPlayer.create(getApplicationContext(),video).getDuration();
Log.d("Duration of msec", msec+"");
try{
//this block not working ... why???
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
//video = uri.parse(String myurl)
retriever.setDataSource(getApplicationContext(),video);
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long timeInmillisec = Long.parseLong( time );
long duration = timeInmillisec / 1000;
long hours = duration / 3600;
long minutes = (duration - hours * 3600) / 60;
long seconds = duration - (hours * 3600 + minutes * 60);
finalTime = timeInmillisec;
Log.d("HH:MM:SS", hours+":"+minutes+":"+seconds+"");
}catch(IllegalArgumentException e){
Log.d(TAG, "media meta retriever error");
e.printStackTrace();
Log.d(TAG, e.getMessage()+"");
}
我的最后一次尝试总是返回非法参数异常,尽管即使使用vlc媒体播放器也能正常播放网址 我尝试了不同的方法,例如
retriever.setDataSource (String path)
retriever.setDataSource (Context context, Uri uri)
答案 0 :(得分:0)
尝试FFmpegMediaMetadataRetriever:
FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource("some URL");
mmr.release();
答案 1 :(得分:0)
我终于在custom-android-media-controller之后得到了我的解决方案 当我改变整个UI时,我不需要得到我需要在自定义媒体控制器中显示的总持续时间。