android - 在 Android 的 MediaRecorder 中包含音频

标签 android audio camera video-capture mediarecorder

我在我的 Android 应用程序中集成了摄像头,可以通过移动摄像头录制视频并保存在 SD 卡中。它工作正常,但保存的 3gpp 文件没有附加音频。如果我添加音频配置,摄像头不会打开,只会看到黑屏。这是我的代码:

if(camera == null) {
      camera = Camera.open();
  camera.unlock();
}
recorder.setCamera(camera);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setOutputFile("/sdcard/adtvworld.3gpp");
recorder.setPreviewDisplay(holder.getSurface());
recorder.prepare();

最佳答案

您需要按正确的顺序设置音源和编码器。您得到的异常是 java.lang.IllegalStateException。尝试以下操作:

if(camera == null) {
    camera = Camera.open();
    camera.unlock();
}
recorder.setCamera(camera);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile("/sdcard/adtvworld.3gpp");
recorder.setPreviewDisplay(holder.getSurface());
recorder.prepare();

这段代码应该适合您。随意将 AudioEncoder 更改为 AAC 以外的其他内容,尽管它对于低 kbps 是最有效的。

关于android - 在 Android 的 MediaRecorder 中包含音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6746980/

相关文章:

java - 安卓3.2 : Receive UDP packets does not work?

java - 自定义 Horizo​​ntalScrollView 中的按钮

C# NAudio 在从另一个页面 POST 后生成 Noise WAV 文件而没有错误

audio - ffmpeg 无法识别视频中的音频流

node.js - 记录传入的音频流 Node js

android - 快速旋转手机180度,相机预览倒转

html - 在 Windows 8.1 平板电脑上的 Web 应用程序中捕获图像

android - 如何使用 PhoneGap 拍摄应用内照片?

Android:fastScrollEnabled 一开始不工作

android - 我怎样才能第二次正确保存我的位图?