通过 mVideoMediaExtractor.seekTo(mStartTimeStamp, MediaExtractor.SEEK_TO_CLOSEST_SYNC);
之后解码通过SurfaceTexture播放视频,有些时候花屏,如下是本人解决方法:
mVideoMediaExtractor.seekTo(mStartTimeStamp, MediaExtractor.SEEK_TO_CLOSEST_SYNC);
seekto 并不是严格等于期望mStartTimeStamp时间点,只是与之相近,需通过getSampleTime()重设该时间点.
if (mStartTimeStamp > 0) {//避免花屏mVideoMediaExtractor.seekTo(mStartTimeStamp, MediaExtractor.SEEK_TO_CLOSEST_SYNC);
long time = mVideoMediaExtractor.getSampleTime();
if (time != -1) {
mStartTimeStamp = time;
}
}
......boolean doRender = mVideoDecodeBufferInfo.size !=0;if ((mStartTimeStamp > 0 && currentDecodeTimeStamp < mStartTimeStamp){ doRender = false; }mVideoDecoder.releaseOutputBuffer(videoDecoderBufIndex, doRender);