2014-11-11 9 views
0

저는 Media Extractor를 사용하여 비디오 파일에서 프레임을 디코딩하고 프레임을 가져 와서 새 비디오 파일로 다시 인코딩하는 Unity 용 플러그인을 작성하고 있습니다. 코덱 생각 때문에 프레임 (로이드 4.2.2에) 잘못된 크기의 배열로 디코딩되는 그러나 실제로 720Media Extractor : 디코더가 Android 4.2에서 잘못된 너비를 제공합니다.

for (int i = 0; i < numTracks; ++i) 
    { 
     MediaFormat format = extractor.getTrackFormat(i); 

     String mime = format .getString(MediaFormat.KEY_MIME); 

     if(mime.startsWith("video/")) 
     { 
      extractor.selectTrack(i); 
      //Decoder 
      decoder = MediaCodec.createDecoderByType(mime); 
      decoder.configure(format, null, null, 0); 

      break; 
     } 
    } 

출력 버퍼 인덱스 다음 INFO_OUTPUT_BUFFERS_CHANGED 및 반환시 높이 736이다 INFO_OUTPUT_FORMAT_CHANGED . 이 로깅하는 것은 나에게 알려 그 디코더 대신 올바른 720

  decoder.queueInputBuffer(inputBufIndex, 0, sampleSize, extractor.getSampleTime(), 0);    
      //Get Outputbuffer Index 
      int outIndex = decoder.dequeueOutputBuffer(info, 10000); 

이 4.4를 실행하는 장치에서 잘 작동의 736의 높이가 생각, 문제는 이전 4.2 장치에만 존재합니다. 누구든지 어떤 생각을 가지고 있습니까?

+0

나는 32의 배수로 높이를 채우고 있다고 생각합니다. logcat에서 MediaFormat 덤프를 표시 할 수 있습니까? 다른 필드를 검사하여 실제 높이를 복구 할 수 있습니다. – fadden

답변