【问题标题】:What governs playback speed when encoding with Android's MediaCodec + mp4parser?使用 Android 的 MediaCodec + mp4parser 编码时,播放速度由什么控制?
【发布时间】:2023-03-13 05:09:01
【问题描述】:

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

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

  • 编码器的输入为 84 帧(相隔 100 毫秒)。
  • 最后一帧设置“流结束”标志。
  • 我在queueInputBuffer上设置了每一帧的展示时间

我尝试调整每一个可以想象的参数 - 但似乎没有任何改变 - 电影总是 3 秒长 - 而且总是播放得太快。

那么是什么控制了播放渗透?如何以“自然”的速度生成电影?

【问题讨论】:

    标签: android-mediacodec mp4parser


    【解决方案1】:

    我想通了:使用 mp4parser 封装时(如果您的目标 APIqueueInputBuffer 的演示时间似乎没有任何区别。

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

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

    【讨论】:

    • 我现在可以确认,当您使用 MediaMuxer 时,演示时间确实会影响 mp4 文件的播放速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2011-06-04
    • 2013-11-23
    • 2014-12-29
    • 1970-01-01
    • 2015-08-21
    • 2014-06-06
    相关资源
    最近更新 更多