标签: android mediacodec
我有一个Android MediaCodec解码器配置了SurfaceTexture对象的Surface。 MP4文件解码工作正常,可以在设备上看到帧。但是如果尝试使用MediaMuxer重新编码为新的MP4文件,则输出文件大小为零,因为SurfaceTexture.getTimestamp()始终返回0.在这种情况下获取帧呈现时间的正确方法是什么?
答案 0 :(得分:0)
转发时间戳。您从SurfaceTexture获得的时间戳是生产者提供的任何内容。
使用MediaCodec解码时,会在BufferInfo对象中收到时间戳。您可以直接将该时间戳传递给编码器ViewDidLoad,或者如果您使用GLES渲染,则将其传递给queueInputBuffer(),这使其可用于SurfaceTexture。
ViewDidLoad
queueInputBuffer()
可以找到here的一个示例,Grafika中的其他示例。