2016-04-11 28 views
2

Bir Android aygıtından video akışı için bir H264 kodlayıcısı kullanmaya çalışıyorum. Görüntüleri çekmek için arka kamerayı kullanıyorum; görüntüler NV21 formatındadır. codec'i düzgün başlatılmış, ancak codec'i kurarken aşağıdaki yığın izleme "yapılandırmak err 0xffffffea başarısız oldu" hata atar edilir: http://pastebin.com/ZrpsB9cyH264 enkoder hatası

Ben Google'ın ve Qualcomm en kodlayıcılar denedi, ama aynı her iki istisnalar atar puan. Ben Android SDK sürümü 21. kullanıyorum bu yazdım kodudur:

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); 
    } 
}; 

diğer mesajları kontrol ettikten ama bunu çözmek mümkün olmamıştır. Herhangi bir ipucu veya öneri takdir edilir. Şimdiden teşekkürler! Eğer bir dekoderi

mediaCodec = MediaCodec.createByCodecName ("OMX.qcom.video DEKODER .avc") ile kodlamak için çalışıyoruz

cevap

0

;

mediaCodec = MediaCodec.createByCodecName ("OMX.qcom.video kodlayıcı .avc") deneyin;

yerine

+0

Kod kaç kez okuduğumu bilmiyorum D: .. Teşekkür ederim! :) –