Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 129|回复: 0

在android studio 中,使用java 和 ffmpeg, 获取一段语音并存成w...

[复制链接]

393

主题

556

帖子

3294

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3294
发表于 2025-10-4 14:11:23 | 显示全部楼层 |阅读模式
在 Android Studio 中使用 Java 和 FFmpeg 获取语音并保存为 WAV 文件,可以通过以下步骤实现:

1. 添加 FFmpeg 库依赖
首先,在项目中集成 FFmpeg 库,推荐使用 FFmpegKit
Gradle:
  1. dependencies {
  2.     implementation 'com.arthenica:ffmpeg-kit-android:4.5.1-LTS'
  3. }
复制代码


2. 权限配置
在 AndroidManifest.xml 中添加录音和存储权限
Xml:
  1. <uses-permission android:name="android.permission.RECORD_AUDIO" />
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
复制代码


3. 使用 FFmpeg 录制音频并保存为 WAV
调用 FFmpegKit.execute() 执行 FFmpeg 命令录制音频:
Java:
  1. import com.arthenica.ffmpegkit.FFmpegKit;
  2. import com.arthenica.ffmpegkit.ReturnCode;

  3. // 定义输出文件路径
  4. String outputPath = getExternalFilesDir(null) + "/recording.wav";

  5. // 构造 FFmpeg 命令
  6. String command = String.format("-f android_camera -i audio -t 10 %s", outputPath);

  7. // 执行命令
  8. FFmpegKit.execute(command, session -> {
  9.     if (ReturnCode.isSuccess(session.getReturnCode())) {
  10.         // 录制成功
  11.         Log.d("FFmpeg", "Audio recorded successfully to " + outputPath);
  12.     } else {
  13.         // 处理错误
  14.         Log.e("FFmpeg", "Recording failed with state " + session.getState());
  15.     }
  16. });
复制代码


注意:实际应用中需根据设备支持的音频输入格式调整命令参数。部分设备可能不直接支持 android_camera 输入方式,此时可考虑先用 MediaRecorder 录制原始音频再转换格式。

4. 替代方案:先录制后转码
如果无法直接录制 WAV,可以分两步完成:
使用 MediaRecorder 录制 AAC 音频
使用 FFmpeg 将 AAC 转换为 WAV 格式
Java:
  1. // 转换命令示例
  2. String convertCommand = String.format("-i %s -acodec pcm_s16le -ar 44100 %s", inputAacPath, outputWavPath);
  3. FFmpegKit.execute(convertCommand);
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-10-25 08:51 , Processed in 0.012545 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表