2016-04-11 20 views
2

Androidデバイスからビデオをストリーミングする際にH264エンコーダを使用しようとしています。画像をキャプチャするために、私はバックカメラを使用しています。画像はNV21形式です。コーデックは適切に初期化されますが、コーデックを設定するときは、次のスタックトレースと「configureがERRの0xffffffeaで失敗しました」エラースローされます。http://pastebin.com/ZrpsB9cyH264エンコーダエラー

私はGoogleのとクアルコムのエンコーダを試してみましたが、同じで、両方投げる例外ポイント。私は、Android SDKのバージョン21を使用していますこれは私が書いたコードです:

private MediaCodec setupVideoCodec() { 
    MediaCodec mediaCodec = null; 

    try { 
     mediaCodec = MediaCodec.createByCodecName("OMX.qcom.video.decoder.avc"); 
     MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 
       VIDEO_WIDTH, VIDEO_HEIGHT); 
     mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, 
       MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface); 
     mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 30); 
     mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, VIDEO_BITRATE); 
     mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, STREAMING_INTERVAL); 

     mediaCodec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE); 
     mediaCodec.start(); 

     Log.d(TAG, String.valueOf("Buffers available: " + mediaCodec.getInputBuffers().length)); 
    } catch (MediaCodec.CodecException e) { 
     Log.e(TAG, e.getLocalizedMessage()); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     Log.e(TAG, e.getLocalizedMessage()); 
     e.printStackTrace(); 
    } 

    return mediaCodec; 
} 

private void encodeData(byte[] data, MediaCodec codec) { 
     int inputBufferIndex = codec.dequeueInputBuffer(-1); 

     if (inputBufferIndex >= 0) { 
      ByteBuffer buffer = codec.getInputBuffer(inputBufferIndex); 
      buffer.clear(); 
      buffer.put(data); 
      codec.queueInputBuffer(inputBufferIndex, 0, data.length, 0, MediaCodec.BUFFER_FLAG_CODEC_CONFIG); 
     } 
    } 

private final Camera.PreviewCallback mPreviewCbk = new Camera.PreviewCallback() { 
    @Override 
    public void onPreviewFrame(byte[] data, Camera camera) { 
     Log.d(TAG, "onPreviewFrame()"); 

     if (mVideoCodec != null) { 
      mExecutor.execute(new EncodeVideo(data, mVideoCodec)); 
     } 

     camera.addCallbackBuffer(data); 
    } 
}; 

私は他の記事をチェックしてきたが、私はそれを解決することができていません。ヒントや提案は感謝しています。前もって感謝します!

答えて

0

あなたはデコーダ

mediaCodec = MediaCodec.createByCodecName( "OMX.qcom.video DECODER .avc。")でエンコードしようとしています。

mediaCodec = MediaCodec.createByCodecName( "OMX.qcom.video エンコーダ .avc")を試みます。

代わりに

+0

私はコードDを何度も読んだことはありません。ありがとう! :) –

関連する問題