使用SurfaceTexture输出配置MediaCodec解码器时如何获取帧时间戳?

时间:2015-10-07 07:32:14

标签: android mediacodec

我有一个Android MediaCodec解码器配置了SurfaceTexture对象的Surface。 MP4文件解码工作正常,可以在设备上看到帧。但是如果尝试使用MediaMuxer重新编码为新的MP4文件,则输出文件大小为零,因为SurfaceTexture.getTimestamp()始终返回0.在这种情况下获取帧呈现时间的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

转发时间戳。您从SurfaceTexture获得的时间戳是生产者提供的任何内容。

使用MediaCodec解码时,会在BufferInfo对象中收到时间戳。您可以直接将该时间戳传递给编码器ViewDidLoad,或者如果您使用GLES渲染,则将其传递给queueInputBuffer(),这使其可用于SurfaceTexture。

可以找到here的一个示例,Grafika中的其他示例。