2017-12-20 6 views
0

mime = video/avc、width = 1920、height = 1080にMediaCodecを使用してビデオエンコーダを設定しようとしています。 残念ながら、デバイスは次のログに文句を言う:エラーを返すACodec configureCodec -38

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() コールが役に立たない例外をスローする可能性があります。

最低限MediaFormatで次の整数のプロパティを定義する必要があります

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

例:

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); 
関連する問題