0

我已经录制了 3gp 格式的音频并将其保存在 sd 卡中。这是我的代码,它运行成功。我需要将图像添加到该音频文件中,以便添加的图像将成为专辑封面&当我尝试在 android 的默认媒体播放器中播放从 sd 卡位置获取的录制音频 ..like this ..

在此处输入图像描述

图片中显示的图像是我必须将其提供给我录制的音频文件的专辑封面

/**
 * Starts a new recording.
 */
public void start() throws IOException {
String state = android.os.Environment.getExternalStorageState();
if (!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
    throw new IOException("SD Card is not mounted.  It is " + state
        + ".");
}

// make sure the directory we plan to store the recording in exists
File directory = new File(path).getParentFile();
if (!directory.exists() && !directory.mkdirs()) {
    throw new IOException("Path to file could not be created.");
}

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
System.out.println("audio_file_path : = " + path);
recorder.setOutputFile(path);
recorder.prepare();

recorder.start();  // Recording is now started




}
4

1 回答 1

1

如果您只需要该文件在 Android 媒体播放器中显示艺术作品,请考虑使用 Google Content Provider 添加专辑封面。创建 3GP 文件后,使用 MediaScannerConnection API 对其进行扫描。将其添加到数据库后,您可以ContentResolver在活动或服务中使用 a 访问它。MediaScannerConnection 将为您提供新创建文件的 URI。您可以尝试将您想要的新艺术品放在 sdcard 上的某个位置。然后,调用:getContentResolver().udpate(uri, newArtContentValue, null, null)newArtContentValue是一个对象的实例,键ContentValueMediaStore.Audio.AudioColumns.ALBUM_ART,值为file:///sdcard/yourartfile.png

警告:我实际上还没有尝试过,所以它可能需要一些小的调整。您可能需要更改文件的扩展名,以便 Google 将其视为音频文件而不是视频文件,以便存在 ALBUM_ART 字段。可能还有其他我没有考虑过的情况。

如果您绝对必须将艺术嵌入文件本身:

3gp 文件(据我所知)不支持嵌入在文件中的隐蔽艺术元数据。因此,您必须记录到另一种容器格式。即便如此,我认为支持隐蔽艺术元数据的唯一可用 OutputFormat 是 MP4,而且我不知道任何允许您直接修改媒体文件以添加此类标签的 Android 功能。

于 2011-04-28T06:50:58.673 回答