ffmpeg编码报错

int frame_decoded = 0;
  int result = avcodec_decode_video2(av_context_.get(),
  av_frame_.get(),
  &frame_decoded,
  &packet);
  if (result < 0) {
  LOG(LS_ERROR) << "avcodec_decode_video2 error: " << result;
  ReportError();


  return WEBRTC_VIDEO_CODEC_ERROR;
  }
  // |result| is number of bytes used, which should be all of them.
  if (result != packet.size) {
  LOG(LS_ERROR) << "avcodec_decode_video2 consumed " << result << " bytes "
  "when " << packet.size << " bytes were expected.";
  ReportError();
  return WEBRTC_VIDEO_CODEC_ERROR;
  }


  if
  (!frame_decoded) {
  LOG(LS_WARNING) << "avcodec_decode_video2 successful but no frame was "
  "decoded.";
  return WEBRTC_VIDEO_CODEC_OK;

  }


前面编码成功,后面av_frame_->buf[0] 获取编码数据,发现指针是空值。


后来发现是前面需要把// Use ref counted frames (av_frame_unref).
  av_context_->refcounted_frames = 1;  // true 这个参数这样初始化,才可以。



猜你喜欢

转载自blog.csdn.net/wxl1986622/article/details/79526159