5

我在 android 上遇到音频问题。

简短的问题:

我需要在所有 Android 设备上播放和录制 aac 格式的音频。我发现它可以从 API 10 开始,但在我的 BLU 设备(2.3.5)上,它可以通过使用MediaRecorderand来工作MediaPlayer。但在 HTC Nexus One 上它不起作用。你有什么建议吗?

长问题:

要以 AAC 格式录制和播放音频,我使用以下代码。它非常简单和愚蠢,但它适用于测试。

String pathForAppFiles = getFilesDir()
                .getAbsolutePath();
        pathForAppFiles += "/bla.mp4";
        if (audioRecorder == null) {

            File file = new File(pathForAppFiles);
            if (file.exists())
                file.delete();

            audioRecorder = new MediaRecorder();

            audioRecorder
                    .setAudioSource(MediaRecorder.AudioSource.MIC);

            audioRecorder
                    .setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

            audioRecorder
                    .setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

            audioRecorder.setOutputFile(pathForAppFiles);

            try {
                audioRecorder.prepare();
            } catch (IllegalStateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            audioRecorder.start();

        } else {
            audioRecorder.stop();
            audioRecorder.release();
            audioRecorder = null;

            new AudioUtils().playSound(pathForAppFiles);
        }

new AudioUtils().playSound(pathForAppFiles);- 创建 MediaPlayer 并从文件中播放声音;

为了使它在 nexus 上工作,我尝试了aac-decoder - 它不会播放文件到最后(仅播放 10 秒文件中的 6 秒)。而且它不会播放上面代码录制的声音。

我也尝试安装 FFmpeg,但我没有使这个库工作的经验。

那么你能推荐一些东西吗?

4

1 回答 1

1

我通过将音频类型更改为 MP3 来解决此问题,因为某些设备(如 Kindle Fire)不能从任何地方播放 aac。

我的建议是:如果你想制作跨平台的声音 - 使用 MP3。您可以使用跛脚编码器将任何声音转换为 MP3 。

于 2013-04-19T12:41:45.970 回答