저는 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 장치에만 존재합니다. 누구든지 어떤 생각을 가지고 있습니까?
나는 32의 배수로 높이를 채우고 있다고 생각합니다. logcat에서 MediaFormat 덤프를 표시 할 수 있습니까? 다른 필드를 검사하여 실제 높이를 복구 할 수 있습니다. – fadden