通过MP4视频向后搜索时,显示时间戳不正确

moe*_*moe 15 video android h.264 mpeg-4 android-video-player

我正在使用MediaCodecMediaExtractor以可变速率播放视频,包括向前和向后.代码使用类似SpeedControlCallback的东西来建立帧间暂停 - presentationTimeUs从输出缓冲区向它提供字段.

99%的情况下,这种方法很好,但是看起来三星S6上的AVC编解码器在向后搜索时提供了错误的演示时间 - 它们被固定在寻求转发的最高价值时,如果这有意义的话.缓冲区中的数据是正确/更改的 - 它只是与固定的显示时间不对应.

S6可以处理具有品牌/ ftype的MP4文件中的后向搜索avc1,但我尝试过的其他品牌的H.264视频(mp42,isom)在100%的时间内都不起作用.相同的文件在三星S5以及我尝试过的所有其他设备上都能正常工作.

编解码器记录这个:

09-15 11:16:21.611 2992-16618/? W/EXYNOS_VIDEO_DEC? sCurrentTimestamp(6002033) is smaller than latestTimeStamp(7001744), uses latestTimeStamp

在每个向后搜索(SEEK_TO_PREVIOUS_SYNC),并将latestTimestampValue为所有关键帧提供错误.

有没有人在Galaxy S6上遇到与AVC编解码器类似的问题,或者是否可以提供任何(非hacky)解决方案?