Я использую текстуру поверхности, как выход mediacodec
, увидеть некоторый журнал ниже, 2 вопроса:mediadecodec к SurfaceTexture: как onDrawFrame знают outputBufferId
mediacodec
выпустило много раз, почему onFrameAvailable и onDrawFrame можно назвать только один раз?- Позвонив
mSTexture.updateTexImage()
в ,mSTexture
будет обновляться один из многихmediacodec
выходных буферов, выпущенных ранее, но я хочу знать, соответствующийoutputBufferId
из обновленногоmSTexture
, я могу получить это?
SurfaceTexture имеет функцию getTimestamp и getTransformMatrix, не уверен, что это может помочь, почему getTimestamp всегда возвращает 0?
public void onDrawFrame(GL10 glUnused) { Log.e(TAG, "onDrawFrame"); synchronized (this) { if (mUpdateST) { mUpdateST = false; mSTexture.updateTexImage(); // Here, I want to get the corresponding outputBufferId of the updated mSTexture } }
public void onFrameAvailable(SurfaceTexture surfaceTexture) { Log.e(TAG, "onFrameAvailable"); synchronized(this) { mUpdateST = true; } }
public void onOutputBufferAvailable(MediaCodec mc, int outputBufferId, BufferInfo bufInfo) { Log.e(TAG, "OutputBufferAvailable " + outputBufferId); decoder.releaseOutputBuffer(outputBufferId, true); }
Е/--- MainActivity - (19589): OutputBufferAvailable 15
Е/--- MainActivity - (19589): OutputBufferAvailable 14
E/--- MainActivity - (19589): OutputBufferAvailable 13
Е/--- MainActivity - (19589): OutputBufferAvailable 12
Е/--- MainActivity - (19589): OutputBufferAvailable 11
Е/--- MyGLSurfaceView - (19589): onFrameAvailable
Е/--- MainActivity - (19589): OutputBufferAvailable 10
Е/--- MainActivity - (19589): OutputBufferAvailable 9
Е/--- MainActivit у - (19589): OutputBufferAvailable 8
Е/--- MyGLSurfaceView - (19589): onDrawFrame
будет ждатьNewImage замедляет скорость декодирования? в настоящее время кажется всего 10 кадров в секунду. –
Узкое место производительности в ExtractMpegFramesTest - «bmp.compress (Bitmap.CompressFormat.PNG, ...)». Удалите сжатие и запись на диск, и он должен работать намного быстрее. Конечно, теперь он ничего не делает полезным ... – fadden
Спасибо fadden .. –