使用 Android 的 MediaCodec + mp4parser 编码时,什么控制播放速度?
What governs playback speed when encoding with Android's MediaCodec + mp4parser?
我正在尝试使用 MediaCodec 和 Mp4Parser(封装成 .mp4)的组合在 Android(使用 API 16)上录制、编码并最终创建一部短片。
一切正常,除了 .mp4 的持续时间:它总是 3 秒长 - 并且运行速度大约是 'right' 的两倍。
- 编码器的输入是 84 帧(间隔 100 毫秒)。
- 最后一帧设置 'end of stream' 标志。
- 我在
queueInputBuffer
上设置了每一帧的呈现时间
我尝试调整每一个可以想到的参数 - 但似乎没有什么不同 - 电影总是 3 秒长 - 并且总是播放得太快。
那么什么控制播放 seepd?如何以 'natuarl' 的速度生成影片?
我想通了:用mp4parser封装时(如果你的目标是API<18需要),你需要在mp4parser的API中设置速度。如果您不使用 Android 的内置多路复用器(仅从 API18 可用),您提供给 queueInputBuffer
的演示时间似乎没有任何区别。
我在 github 上偶然发现了 this 问题,这表明需要以下内容:
new H264TrackImpl(new FileDataSourceImpl(rawDataFile), "eng", 100, 10);
- 最后两个参数(timeScale和frameTick)设置播放速度为'noraml'。
我正在尝试使用 MediaCodec 和 Mp4Parser(封装成 .mp4)的组合在 Android(使用 API 16)上录制、编码并最终创建一部短片。
一切正常,除了 .mp4 的持续时间:它总是 3 秒长 - 并且运行速度大约是 'right' 的两倍。
- 编码器的输入是 84 帧(间隔 100 毫秒)。
- 最后一帧设置 'end of stream' 标志。
- 我在
queueInputBuffer
上设置了每一帧的呈现时间
我尝试调整每一个可以想到的参数 - 但似乎没有什么不同 - 电影总是 3 秒长 - 并且总是播放得太快。
那么什么控制播放 seepd?如何以 'natuarl' 的速度生成影片?
我想通了:用mp4parser封装时(如果你的目标是API<18需要),你需要在mp4parser的API中设置速度。如果您不使用 Android 的内置多路复用器(仅从 API18 可用),您提供给 queueInputBuffer
的演示时间似乎没有任何区别。
我在 github 上偶然发现了 this 问题,这表明需要以下内容:
new H264TrackImpl(new FileDataSourceImpl(rawDataFile), "eng", 100, 10);
- 最后两个参数(timeScale和frameTick)设置播放速度为'noraml'。