当前位置: 代码迷 >> 多媒体/流媒体开发 >> [ffmpeg]利用av_seek_frame定位后出错解决办法
  详细解决方案

[ffmpeg]利用av_seek_frame定位后出错解决办法

热度:7148   发布时间:2013-02-26 00:00:00.0
[ffmpeg]利用av_seek_frame定位后出错
想在android的statefright中用av_seek_frame实现定位,可是在调用了av_seek_frame之后,av_read_frame就再也不能成功读取到包了,大概代码如下:

 int64_t seekTimeUs;
 ReadOptions::SeekMode mode;
 // 重新定位的场合
 if (options && options->getSeekTo(&seekTimeUs,&mode)) {
  LOGE("seeking in Decoder,seekTimeUs:%lld",seekTimeUs);
  CHECK(seekTimeUs >= 0);

  // 此处的seekTimeUs是由android播放器直接传进来的时间戳,没经过任何转换
  if(av_seek_frame(pFormatCtx,videoStream,seekTimeUs,AVSEEK_FLAG_BACKWARD) <0)
  {
  LOGE("seeking erro in XVIDDecoder ");
  }

  } else {
  seekTimeUs = -1;
  }

   
if(av_read_frame(pFormatCtx, &packet)>=0) {
  // 调用av_seek_frame后就不会再进来
}

------解决方案--------------------------------------------------------
应该该是你的调用流程有问题,起参考FFPLAY的调用和你的有什么不同
  相关解决方案