0

オーディオ エンコーダーで問題が発生しました。MediaRecorder を使用して音声を録音しています。しかし、音声を正常に録音するには、デバイスでデフォルトの audioEncoder を使用する必要があることがわかりました。

デフォルトのオーディオ エンコーダーの種類を確認するにはどうすればよいですか??

ありがとう。

更新しました:

private MediaRecorder mRecorder = null;
public void startRecording(String aOutputFileName, int aOutputformat, int       aAudioEncoder) 
{
    if(null == mRecorder){
        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(aOutputformat);
        mRecorder.setOutputFile(aOutputFileName);
        mRecorder.setAudioEncoder(aAudioEncoder);

        try {
            mRecorder.prepare();
            mRecorder.start();
        } 
        catch (IOException e) {
            e.printStackTrace();
            Log.e(LOG_TAG, "prepare() failed");
        }

    }
}

呼び出し機能:

mVoiceRecorder.startRecording(mFileName, MediaRecorder.OutputFormat.THREE_GPP, MediaRecorder.AudioEncoder.DEFAULT);
4

2 に答える 2

0

問題は、Androidがすべてのデバイスで特定のコーデックをサポートすることになっていることですが、それは決して起こりません。私はこの問題に遭遇し、私がそれをどのように克服するかについての考えをあなたに与える質問をここに投稿しました。

すべてのデバイスがAudioEncoder.AMR_NBまたはAudioEncoder.DEFAULTを使用できる必要がありますが、そうではありません。IMOの最善策は、AudioEncoderクラスで使用可能なエンコーダーをループし、prepare()またはstart()でコーデックが失敗するかどうかをテストすることです。含まれている場合は、カウンターをインクリメントしてループを続行します。私の場合、ErrorListenerを使用してエラーまたは成功をキャッチし、デフォルトのエンコーダ定数を共有設定に設定します。

于 2012-09-11T12:27:41.623 に答える
0

次の方法で、目的のオーディオコーデックを指定できます。

MediaRecorder.setAudioEncoder()

すべての Android デバイスは、少なくともこれらのコーデックをサポートしているため、必要なものを選択してください。

于 2012-08-07T07:00:21.113 に答える