Android MediaRecorder: Difference between AmrWb and ThreeGpp OutputFormat

If i use the Android MediaRecorder to record i file i can set its properties like this:

this.recorder.SetAudioSource(AudioSource.Mic);
this.recorder.SetOutputFormat(OutputFormat.AmrWb);
this.recorder.SetAudioEncoder(AudioEncoder.AmrWb);
this.recorder.SetAudioSamplingRate(16000);

It generates a 3gpp -File. If i send the recorded file to the Google Cloud Speech API the audio is recognized and transformed into text:

var response = speech.SyncRecognize(new RecognitionConfig()
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.AmrWb,
                SampleRate = 16000,
                LanguageCode ="de-DE"
            }, RecognitionAudio.FromFile("test.3gpp"));

However, if i change the OutputFormat to

this.recorder.SetOutputFormat(OutputFormat.ThreeGpp);

it also generates a .3gpp-File, but the Google Cloud API throws an error. That's strange, because i thought the OutputFormat doesn't matter and just defines the container of the encoded data which are AMR encoded in both cases. So my question is:

What exactly is the difference between the AMR and the ThreeGpp OutputFormat?

链接地址: http://www.djcxy.com/p/5268.html

上一篇: Java HTTPS客户端证书认证

下一篇: Android MediaRecorder:AmrWb和ThreeGpp OutputFormat的区别