【问题标题】:AMR frame size calculationAMR 帧大小计算
【发布时间】:2023-03-11 04:00:01
【问题描述】:

我有下面的 sn-p 代码,它将 .amr 文件放入字节数组中。

我知道如何从标题中获取比特率,如下所示。那么假设比特率为7.95,那么计算帧大小的公式是什么?谢谢。

public void getFrames() {
        File inputFile = new File(getmFileName());
        try {
            FileInputStream fis = new FileInputStream(inputFile);

            byte fileContent[]= new byte[(int) inputFile.length()];

            fis.read(fileContent); // Reads the file content as byte.
            fis.close();

            int count = 0;
            for (int i = 0; i < 8; i++) {

               Log.i(LOG_TAG, "byte"+ fileContent[i]);
               count++;
               Log.i(LOG_TAG, "7thbyte_of_1stHeader:" + ((fileContent[7]>>3)& 0x0F) );
            }} catch (Exception ex) {
            // TODO Auto-generated catch block
            ex.printStackTrace();

        }   }

【问题讨论】:

    标签: java android audio amr


    【解决方案1】:

    Nokiaoffers the following table关于编解码器模式(CMR)、比特率和帧大小的关系:

    CMR     MODE        FRAME SIZE( in bytes )
    0      AMR 4.75        13
    1      AMR 5.15        14 
    2      AMR 5.9         16
    3      AMR 6.7         18
    4      AMR 7.4         20
    5      AMR 7.95        21
    6      AMR 10.2        27
    7      AMR 12.2        32
    

    【讨论】:

    • 谢谢迈克尔。我在这里有点困惑,在诺基亚规范中,它说帧大小(以位为单位)是 159。所以数学没有加起来。 159/8 不等于 21。我错过了什么?
    • trunc((159+7)/8) + 1 = 21。您必须填充位以填充字节,然后为帧头添加另一个字节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    相关资源
    最近更新 更多