Android上的视频时长

Posted

技术标签:

【中文标题】Android上的视频时长【英文标题】:duration of a video on Android 【发布时间】:2017-05-16 14:26:05 【问题描述】:

在这段代码中,我尝试使用 getDuration() 方法获取视频的持续时间,但它不起作用并且总是返回 -1。怎么了?我可以用另一种方式获取持续时间吗?(视频是放在 raw 目录中的 mp4 文件)

    videoPlayer = (VideoView) this.findViewById(R.id.videoView2);
    videoPlayer.setVideoPath("android.resource://"+getPackageName()+"/"+R.raw.video3);
    int duration = videoPlayer.getDuration();

【问题讨论】:

您是否确保视频出现在链接中? 是的,因为我可以看到视频 尝试启动它然后使用函数 【参考方案1】:

从 videoView 中的 getDuration 复制:

public int getDuration()
    if (isInPlaybackState()) 
        return mMediaPlayer.getDuration();
    
    return -1;

因此,据我所知,如果视频没有播放,您将无法获得正确的持续时间。因此,一种可能的解决方案是开始播放,获取持续时间,然后停止播放并重新启动视频。

【讨论】:

【参考方案2】:

在 setOnPreparedListener 中调用 getDuration

 videoPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() 
                @Override
                public void onPrepared(MediaPlayer mediaPlayer) 
                    long duration = videoPlayer.getDuration();
                
            );

【讨论】:

以上是关于Android上的视频时长的主要内容,如果未能解决你的问题,请参考以下文章

Android 获取File类视频文件的总时长

基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码

如何在Android中锁定屏幕时长按电源按钮启用GPS?

【Android音视频】MediaMetadataRetriever使用

当在视频视图android中使用seekbar时如何举杯?

音视频开发系列——全面了解Android MediaMetadataRetriever