2014-03-27 180 views
0

我有以下代码片段,它将.amr文件放入字节数组中。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(); 

     } } 

回答

0
诺基亚

offers 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 
+0

由于迈克尔。我在这里有点困惑,因为诺基亚的规格说它的帧大小是159.所以数学不会加起来。 159/8不等于21.我错过了什么? – cube