Android录音存储路径
时间: 2023-06-01 10:03:45 浏览: 413
Android录音存储路径通常为SD卡或内部存储器中的特定文件夹。具体路径取决于设备和操作系统版本。以下是一些常见的路径示例:
- SD卡:/sdcard/Recordings
- 内部存储器:/storage/emulated/0/Recordings
- 共享存储器:/storage/shared/Recordings
需要注意的是,不同的应用程序可能会使用不同的存储路径。因此,您需要确认您正在使用的应用程序的存储路径,以便访问您的录音文件。
相关问题
安卓通话录音文件存储路径
在 Android 中,通话录音文件的存储路径可能因不同的设备而异。通常情况下,录音文件会被存储在设备的内部存储或外部 SD 卡中。以下是一些可能的存储路径:
- 内部存储:/storage/emulated/0/CallRecorder/
- 外部 SD 卡:/storage/extSdCard/CallRecorder/
- 内部存储(旧版本 Android):/sdcard/CallRecorder/
请注意,这些路径可能因不同的设备和操作系统版本而异。你可以通过代码来获取正确的存储路径。例如,可以使用以下代码来获取外部存储路径:
```java
File externalDir = Environment.getExternalStorageDirectory();
String externalPath = externalDir.getAbsolutePath();
String filePath = externalPath + "/CallRecorder/";
```
这将返回外部存储路径并将其与 CallRecorder 文件夹连接起来,以便保存通话录音文件。
android 录音压缩
Android录音压缩可以使用Android系统提供的MediaCodec API。具体步骤如下:
1. 创建一个MediaCodec对象,设置编码器类型和参数。
2. 创建一个MediaExtractor对象,从录音文件中读取数据。
3. 创建一个输出文件,用于存储压缩后的音频数据。
4. 循环读取录音数据,将其输入给MediaCodec对象进行编码。
5. 获取MediaCodec对象的输出数据,将其写入输出文件中。
6. 释放资源,关闭所有对象。
以下是一个简单的示例代码:
```java
public void compressAudio(String inputFilePath, String outputFilePath, String mimeType) {
try {
MediaExtractor extractor = new MediaExtractor();
extractor.setDataSource(inputFilePath);
MediaFormat format = null;
int trackCount = extractor.getTrackCount();
for (int i = 0; i < trackCount; i++) {
format = extractor.getTrackFormat(i);
String mime = format.getString(MediaFormat.KEY_MIME);
if (mime.startsWith("audio/")) {
extractor.selectTrack(i);
break;
}
}
MediaCodec codec = MediaCodec.createEncoderByType(mimeType);
codec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
codec.start();
ByteBuffer[] inputBuffers = codec.getInputBuffers();
ByteBuffer[] outputBuffers = codec.getOutputBuffers();
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
FileOutputStream fos = new FileOutputStream(outputFilePath);
boolean hasMoreData = true;
int timeoutUs = 10000;
while (hasMoreData) {
int inputBufferIndex = codec.dequeueInputBuffer(timeoutUs);
if (inputBufferIndex >= 0) {
ByteBuffer inputBuffer = inputBuffers[inputBufferIndex];
int sampleSize = extractor.readSampleData(inputBuffer, 0);
if (sampleSize < 0) {
codec.queueInputBuffer(inputBufferIndex, 0, 0, 0, MediaCodec.BUFFER_FLAG_END_OF_STREAM);
hasMoreData = false;
} else {
long presentationTimeUs = extractor.getSampleTime();
codec.queueInputBuffer(inputBufferIndex, 0, sampleSize, presentationTimeUs, 0);
extractor.advance();
}
}
int outputBufferIndex = codec.dequeueOutputBuffer(bufferInfo, timeoutUs);
while (outputBufferIndex >= 0) {
ByteBuffer outputBuffer = outputBuffers[outputBufferIndex];
byte[] chunk = new byte[bufferInfo.size];
outputBuffer.get(chunk);
outputBuffer.clear();
fos.write(chunk);
codec.releaseOutputBuffer(outputBufferIndex, false);
outputBufferIndex = codec.dequeueOutputBuffer(bufferInfo, timeoutUs);
}
}
fos.flush();
fos.close();
extractor.release();
codec.stop();
codec.release();
} catch (IOException e) {
e.printStackTrace();
}
}
```
其中,inputFilePath 是原始录音文件的路径,outputFilePath 是压缩后的音频文件的路径,mimeType 是编码器的类型,例如 "audio/mp4a-latm" 表示 AAC 编码器。
阅读全文