使用 Android 的 MediaCodec + mp4parser 编码时,什么控制播放速度?

What governs playback speed when encoding with Android's MediaCodec + mp4parser?

我正在尝试使用 MediaCodec 和 Mp4Parser(封装成 .mp4)的组合在 Android(使用 API 16)上录制、编码并最终创建一部短片。

一切正常,除了 .mp4 的持续时间:它总是 3 秒长 - 并且运行速度大约是 'right' 的两倍。

我尝试调整每一个可以想到的参数 - 但似乎没有什么不同 - 电影总是 3 秒长 - 并且总是播放得太快。

那么什么控制播放 seepd?如何以 'natuarl' 的速度生成影片?

我想通了:用mp4parser封装时(如果你的目标是API<18需要),你需要在mp4parser的API中设置速度。如果您不使用 Android 的内置多路复用器(仅从 API18 可用),您提供给 queueInputBuffer 的演示时间似乎没有任何区别。

我在 github 上偶然发现了 this 问题,这表明需要以下内容:

 new H264TrackImpl(new FileDataSourceImpl(rawDataFile), "eng", 100, 10);
  • 最后两个参数(timeScale和frameTick)设置播放速度为'noraml'。