2017-12-20 10 views
0

mime = video/avc, width = 1920, height = 1080에 MediaCodec을 사용하여 비디오 인코더를 구성하려고합니다. 불행하게도 장치는 다음 로그로 불평 :ACodec configureCodec에서 오류를 반환했습니다.

12-20 13:11:49.410 5781-5817/ I/OMXClient: Treble IOmx obtained 
12-20 13:11:49.423 5781-5817/ E/ACodec: [OMX.google.h264.encoder] configureCodec returning error -38 
12-20 13:11:49.424 5781-5817/ E/ACodec: signalError(omxError 0x80001001, internalError -2147483648) 
12-20 13:11:49.424 5781-5816/ E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 3 
12-20 13:11:49.425 5781-5801/ E/MediaCodec: configure failed with err 0x80001001, resetting... 
12-20 13:11:49.433 5781-5817/com.humaneyes.filesave I/OMXClient: Treble IOmx obtained 

답변

0

일부 코덱은 몹시 신경을 쓰는하고 특별한 속성을 필요로한다.

이들 중 일부를 지정하지 않으면 MediaCodec configure() 호출이 도움이되지 않는 예외를 throw 할 수 있습니다.

  • MediaFormat.KEY_BIT_RATE
  • MediaFormat.KEY_FRAME_RATE
  • MediaFormat.KEY_I_FRAME_INTERVAL
  • MediaFormat.KEY_COLOR_FORMAT
:

최소한의 MediaFormat에서 다음 정수 속성을 정의해야합니다

예 :

MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", 1920, 1080); 
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 2000000); 
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 30); 
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar); 
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);