【问题标题】:Frames to milliseconds conversion in androidandroid中的帧到毫秒转换
【发布时间】:2012-05-01 09:44:05
【问题描述】:

在Android中AudioTrack类的getPlaybackHeadPosition()方法返回播放头位置以帧表示,它的等效值是多少毫秒?

【问题讨论】:

    标签: android audiotrack


    【解决方案1】:

    我猜是这样的

    ( track.getPlaybackHeadPosition( ) / track.getSampleRate( ) ) * 1000.0
    

    换句话说,播放的帧数除以每秒的帧数。然后将结果乘以 1000 得到毫秒。

    一帧由每个通道一个样本组成,因此应该等于采样率。

    例如,如果getPlaybackHeadPosition( ) 返回8654 并且getSampleRate( ) 返回8000,则轨道开始后的时间将为( 8654 / 8000 ) * 10001081.75ms。 (假设浮点运算)

    【讨论】:

    • 例如,如果音频有 8000 个样本/秒,则 (track.getPlaybackHeadPosition( )/8) 以毫秒为单位提供当前播放头位置。
    • 正确。我将在答案中添加一个示例。
    • 那么“框架”和样本是一样的吗?
    • 或使用纯整数数学(无浮点数):track.getPlaybackHeadPosition() * 1000 / track.getSampleRate()
    【解决方案2】:

    @Nike 的回答是对的。

    但是有一个问题。

    如果我们调用MediaExtractor.seekTo方法,AudioTrack.getPlaybackHeadPosition()返回累加值。

    MediaExtractor.getSampleTime() / 1000 是当前位置的正确毫秒数。

    你可以去看看!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      相关资源
      最近更新 更多