我知道getCurrentPosition()用于返回当前播放的进度值,但是这个值是个什么值呢?  是时间?还是桢数? 如果是时间,那么不同的格式,返回值应该都是相同的
但是我拿2个不同类型的视频进行测试,都是播放一秒后,调用getCurrentPosition()方法获取返回值,但是这个返回值相差很大。测试代码如下:
public static boolean videoSeekTo(Context context, Uri uri, String fileName) throws Exception {
    int currentPosition = 0;
    int duration = 0;
    MediaPlayer mp = new MediaPlayer();
    mp.setDataSource(context, uri);
    mp.start();    //测试AAC.3gp格式文件
    if (fileName = "H264_AAC.3gp")){
        mp.pause();
        Thread.sleep(MediaNames.PAUSE_WAIT_TIME);
        mp.seekTo(0);                      //设置进度条从0开始播放
        mp.start();
        Thread.sleep(1000);                //sleep 1秒,相当于播放一秒,再获取视频进度值,
        currentPosition = mp.getCurrentPosition();    // 这里返回currentPosition值为400
        Log.v(TAG,"short position " + currentPosition);  
        if (currentPosition > 100 )
        return true;
        else
        return false;
    }    //测试AMR.3gp格式文件
    if (fileName = "H264_AMR.3gp")){
        mp.pause();
        Thread.sleep(MediaNames.PAUSE_WAIT_TIME);
        mp.seekTo(0);
        mp.start();
        Thread.sleep(1000);
        currentPosition = mp.getCurrentPosition();   // 这里返回currentPosition值为42
        Log.v(TAG,"short position " + currentPosition);
        if (currentPosition > 100 )
        return true;
        else
        return false;
    }
}搞不懂的是(1)为什么同样都是播放一秒,怎么不同的格式,返回值相差这么多?(2)getCurrentPosition()方法返回的值,比如400,表示的是桢数?时间?还是什么?(3)代码最后判断条件 if (currentPosition > 100 ),如果currentPosition大于100,则测试通过,那么这个100是怎么得出来的?

解决方案 »

  1.   

    刚才测试了下,同样的视频文件,桢率不同,一个是 23FPS 另外一个是 8FPS 23FPS的文件返回值是:42毫秒
    8FPS 的文件返回值是:125毫秒为什么桢率越大的,返回值越小?  哪位牛人知道 这个返回值到底跟什么有关系呢?  
      

  2.   

    连个回复都木有阿,想散分都不行阿计算了下,24FPS的倒数正好是42,这个应该是指1桢的时间。
      

  3.   

    public int getCurrentPosition ()
    Since: API Level 1Gets the current playback position.
    Returns    * the current position in milliseconds api说的很详细,是毫秒数。