BufferOverflow问题

时间:2018-12-17 13:02:33

标签: android h.264 android-mediacodec

当我运行以下代码时,出现此错误 java.nio.BufferOverflowException 我正在尝试从android中的Camera Preview创建视频流,我从相机中获取NV21字节数据,并尝试将其转换为mp4格式。当我尝试运行 inputBuffer.put(data);时出现错误; 线,怎么解决呢?我可以尝试其他方法将字节转换为.mp4吗?

public class Resources() {
  @Produces
  public ConfigurationService getConfigurationService() {
      return new ConfigurationService(Constants.CONFIG);
  }
}

public abstract class MyAbstractClass {

  @Inject
  private transient ConfigurationService configurationService; // getter+setter

}

@Named
public class SomeImpl extends MyAbstractClass implements Serializable {
  // ...
}

@Named
public class OtherImpl extends MyAbstractClass implements Serializable {
  // ...
}

@Named
@ViewScoped
public class MyCtrl {

  @Inject
  private SomeImpl someImpl;

  @Produces
  public SomeImpl getSomeImpl() {
    return new SomeImpl(MyStringParam);
  }

}

1 个答案:

答案 0 :(得分:0)

您的MediaCodec已配置为使用320x240的固定尺寸,该尺寸显然小于所使用的相机框架。如果MediaCodec期望较小的帧,它将提供较小的inputBuffers,从而导致BufferOverflowException

要解决此问题,请将您的相机配置为使用320x240尺寸,或者根据当前选择的相机预览尺寸动态配置MediaCodec