MediaCodec seekto()后解码播放视频,花屏?

通过 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) ;

你可能感兴趣的:(MediaCodec seekto()后解码播放视频,花屏?)