我正在开发一个应用程序,其中视频以3个不同的间隔暂停。第二次暂停后,如果单击了一个按钮,则它应从上一个位置重新开始。
例如。如果当前在1:30暂停,则单击一个按钮,它将转到上一个书签,即00:45。
我认为使用MediaPlayer.seekTo()将帮助我实现这一目标。但是,seekTo()根本不寻找位置。即使在调用seekTo()之后,currentPosition仍保持不变;
这是我的代码。
mediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() {
@Override
public void onSeekComplete(MediaPlayer mp) {
Log.d("VID_PLAYER","Seek Complete. Current Position: " + mp.getCurrentPosition());
mp.start();
}
});
在下面的某个地方,我有这个...
mediaPlayer.seekTo(45000);
问题是什么?为什么不是seekTo();在职的?
任何帮助,将不胜感激。
我目前正在Android v4.0.3(ICS)上对其进行测试
最佳答案
Android无法执行seekTo
的原因之一是由于视频的编码异常。例如,可以以MP4格式在文件的开头和结尾指定所谓的“搜索点”(即搜索索引)。如果在文件开头指定了它们,则seekTo
将正确运行。但是,如果在文件末尾指定了它们,那么seekTo将不执行任何操作,并且视频将从seekTo
之后的开头开始。
这已在Android 4.4.2中得到确认是错误还是功能。
P.S. 在YouTube上,所有视频均在文件开头以“搜索点”进行编码。因此,如果您在应用程序中遇到seekTo
的问题,请首先使用YouTube中的一些视频文件检查您的应用程序。也许您需要重新编码视频...