mediaCodec.dequeueOutputBuffer(bufferInfo, 0)为什么一直返回-1

-星星- 2016-12-13 03:43:06
ByteBuffer[] inputBuffers;
Socket socket = serverSocket.accept();
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
Log.i(TAG, "run: 连接成功");
InputStream inputStream = socket.getInputStream();
inputBuffers = mediaCodec.getInputBuffers();
int i = 0;
while (true) {
byte[] byteBuffer=new byte[10240];
inputStream.read(byteBuffer);
int inputBufferIndex = mediaCodec.dequeueInputBuffer(-1);//获取输入缓冲区的索引
if (inputBufferIndex >= 0) {
ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
inputBuffer.clear();
inputBuffer.put(byteBuffer);//先获取缓冲区,再放入值
mediaCodec.queueInputBuffer(inputBufferIndex, 0, inputBuffer.position(), i * 1000000 / 30, 0);//四个参数,第一个是输入缓冲区的索引,第二个是放入的数据大小,第三个是时间戳,保证递增就是
i++;
}
int outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo, 0);
Log.i(TAG, "run: "+outputBufferIndex);
while (outputBufferIndex >= 0) {
mediaCodec.releaseOutputBuffer(outputBufferIndex, true);//释放缓冲区解码的数据到surfaceview,一般到了这一步,surfaceview上就有画面了
outputBufferIndex = mediaCodec.dequeueOutputBuffer(bufferInfo, 0);
}
}
...全文
1347 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧