3、我个人测试seekto要写在prepare后面才能有效,但我不确定一定要这样做。
如果想要视频从第xxxx毫秒开始播放,正确的做法是这样的:
首先给mediaPlayer配置属性
mediaPlayer.setDisplay(videoSurface.getHolder());
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepare();
mediaPlayer.seekTo(millis);
} catch (IOException e) {
然后为mediaPlayer添加监听OnSeekCompleteListener();
mediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() {
public void onSeekComplete(MediaPlayer m) {
m.start();
isPlaying = true;
这样就可以正确使用seekto了。
1、seekto方法的参数是毫秒,而不是秒,所以要注意参数传递2、seekto方法是异步方法,所以如果想要这样写:mediaPlayer.seekTo(10000);mediaPlayer.start();是没有效果的3、我个人测试seekto要写在prepare后面才能有效,但我不确定一定要这样做。如果想要视频从第xxxx毫秒开始播放,正确的做法是这样
4.2.1. 初始化
首先我们需要在initState生命周期中对视频进行初始化,对视频是否加载成功显示不同的UI界面:加载中、加载成功、加载失败。
void _urlChange() async {
if (widget.url == null || widget.url == ‘’) return;
if (_controller != null) {
/// 如果控制器存在,清理掉重新创建
_controller.removeListener(_videoListener);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setScreenOnWhilePlaying(true);
mediaPlayer.prepareAsync();
attachMediaController();
} catch (IOException ex) {
Log.w(TAG, "Unable to open content: " + mUri, ex);
return;
} catch (Illega
有时候我们在播放视频的时候需要对视频进行seekTo处理。通过videoPlayer或者mediaPlayer的seekTo方法理论上是可以简单的实现。 public native void seekTo(int msec) throws IllegalStateException;
可以看出我们只需要传入一个视频对应的毫秒数就可以直接对视频进行seek。
但是实际上通过一个seekBar来进
问题描述:最近在做android4.0上的视频播放帧同步功能,要求多台设备同时播放同一个视频,且尽量要求每一帧都在同一时间播出。目前分两端:其中windows端为控制端,用于实时监测;android端当前播放视频的位置(getCurrantPosition函数获取)。如监测到两台android端在第10秒发来的瞬时播放位置数据分别为10000ms、10100ms。
假设视频是24帧/秒(大概