我在android中使用MediaCodec低级Api来解码从IP CAMERA收到的h264原始流.来自IP摄像机的原始流,在TCP/IP连接上接收.
要解码流,我的代码是:
@Override
protected void onCreate(Bundle savedInstanceState) {
MediaCodec mCodecc;
MediaFormat mFormat;
BufferInfo mInfo;
ByteBuffer[] inputBuffers ;
ByteBuffer[] outputBuffers ;
}
protected void Init_Codec()
{
mCodecc = MediaCodec.createDecoderByType("video/avc");
mFormat = MediaFormat.createVideoFormat("video/avc", width, height);
mInfo = new BufferInfo();
mFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar);
mCodecc.configure(mFormat, holder.getSurface(), null,0);
}
protected void Start_Codec()
{
mCodecc.start();
inputBuffers = mCodecc.getInputBuffers();
outputBuffers = mCodecc.getOutputBuffers();
}
private void OnRawStreamReceived(final ByteBuffer buffer)
{
mHandler.postAtFrontOfQueue(new Runnable() {
@Override
public void run()
{
int inIndex = mCodecc.dequeueInputBuffer(10000);
if(inIndex>=0)
{
inputBuffers[inIndex] = buffer;
mCodecc.queueInputBuffer(inIndex, 0,buffer.limit(),System.currentTimeMillis(), …Run Code Online (Sandbox Code Playgroud)