|
|
在 Android Studio 中使用 Java 和 FFmpeg 获取语音并保存为 WAV 文件,可以通过以下步骤实现:
1. 添加 FFmpeg 库依赖
首先,在项目中集成 FFmpeg 库,推荐使用 FFmpegKit
Gradle:
- dependencies {
- implementation 'com.arthenica:ffmpeg-kit-android:4.5.1-LTS'
- }
复制代码
2. 权限配置
在 AndroidManifest.xml 中添加录音和存储权限
Xml:
- <uses-permission android:name="android.permission.RECORD_AUDIO" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
复制代码
3. 使用 FFmpeg 录制音频并保存为 WAV
调用 FFmpegKit.execute() 执行 FFmpeg 命令录制音频:
Java:
- import com.arthenica.ffmpegkit.FFmpegKit;
- import com.arthenica.ffmpegkit.ReturnCode;
- // 定义输出文件路径
- String outputPath = getExternalFilesDir(null) + "/recording.wav";
- // 构造 FFmpeg 命令
- String command = String.format("-f android_camera -i audio -t 10 %s", outputPath);
- // 执行命令
- FFmpegKit.execute(command, session -> {
- if (ReturnCode.isSuccess(session.getReturnCode())) {
- // 录制成功
- Log.d("FFmpeg", "Audio recorded successfully to " + outputPath);
- } else {
- // 处理错误
- Log.e("FFmpeg", "Recording failed with state " + session.getState());
- }
- });
复制代码
注意:实际应用中需根据设备支持的音频输入格式调整命令参数。部分设备可能不直接支持 android_camera 输入方式,此时可考虑先用 MediaRecorder 录制原始音频再转换格式。
4. 替代方案:先录制后转码
如果无法直接录制 WAV,可以分两步完成:
使用 MediaRecorder 录制 AAC 音频
使用 FFmpeg 将 AAC 转换为 WAV 格式
Java:
- // 转换命令示例
- String convertCommand = String.format("-i %s -acodec pcm_s16le -ar 44100 %s", inputAacPath, outputWavPath);
- FFmpegKit.execute(convertCommand);
复制代码
|
|