我们在尝试重新编码视频时遇到了一个特殊的问题,它似乎只发生在Nexus 5.我们使用MediaCodec对客户端的视频进行压缩和重新编码,有时在任务运行时在Nexus 5上,我们遇到了以下崩溃:
05-15 16:25:15.023 E/AndroidRuntime( 4716): FATAL EXCEPTION: FinalizerWatchdogDaemon
05-15 16:25:15.023 E/AndroidRuntime( 4716): java.util.concurrent.TimeoutException: android.graphics.SurfaceTexture.finalize() timed out after 10 seconds
05-15 16:25:15.023 E/AndroidRuntime( 4716): at android.graphics.SurfaceTexture.nativeFinalize(Native Method)
05-15 16:25:15.023 E/AndroidRuntime( 4716): at android.graphics.SurfaceTexture.finalize(SurfaceTexture.java:353)
05-15 16:25:15.023 E/AndroidRuntime( 4716): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:190)
05-15 16:25:15.023 E/AndroidRuntime( 4716): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173)
05-15 16:25:15.023 E/AndroidRuntime( 4716): at java.lang.Thread.run(Thread.java:818)
我们的代码与bigflake的DecodeEditEncodeTest(https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/DecodeEditEncodeTest.java)相似,我们也使用他们的InputSurface,OutputSurface和TextureRender类(https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/)。我猜这个问题出现在OutputSurface或TextureRender的某个地方,因为它们是实际操作表面纹理的类。
我们可以提出的唯一可靠的重复步骤是,当几个视频排队等待重新编码时,它似乎会随机发生,即使编码器一次只能处理一个视频。
非常感谢任何帮助。