使用Android的MediaCodec + mp4parser进行编码时,播放速度如何?

时间:2016-08-03 08:54:54

标签: mediacodec mp4parser

我正在尝试录制,编码并最终在Android上创建一个短片(使用API​​ 16),并结合MediaCodec和Mp4Parser(封装到.mp4中)。

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

  • 编码器的输入为84帧(相隔100毫秒)。
  • 最后一帧设置'end of stream'标志。
  • 我在queueInputBuffer
  • 上设置每个帧的演示时间

我试图调整每个可以想象的参数 - 但似乎没有任何区别 - 电影总是3秒长 - 并且总是播放得太快。

那么播放seepd的主要内容是什么?如何以'natuarl'速度制作电影?

1 个答案:

答案 0 :(得分:0)

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

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

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