当前位置: 首页 > 面试题库 >

使用RandomAccessFile进行音频附加

谷梁承宣
2023-03-14
问题内容

我使用以下代码将sdcard中存在的多个wav文件附加到单个文件。audFullPath是一个数组列表,其中包含音频文件的路径。这是正确的吗。完成此操作后,当我播放recordedaudio1时。它只播放第一个文件。我想播放所有文件。任何建议..

File file=new File("/sdcard/AudioRecorder/recordedaudio1.wav");

RandomAccessFile raf = new RandomAccessFile(file, "rw");

for(int i=0;i<audFullPath.size();i++) {
    f=new File(audFullPath.get(i));      
    fileContent = new byte[(int)f.length()];
    System.out.println("Filecontent"+fileContent);
    raf.seek(raf.length()); 
    raf.writeBytes(audFullPath.get(i));
}

问题答案:

您无法以WAV这种方式附加文件。那是因为每个WAV都有特殊的格式:

最简单的WAV文件如下所示:

[RIFF HEADER]
...
totalFileSize    

[FMT CHUNK]
...
audioFormat
frequency
bytesPerSample
numberOfChannels
...

[DATA CHUNK]
dataSize
<audio data>

您需要做的是:

  1. 确保所有WAV文件兼容:相同的音频格式,频率,每个样本的位数,通道数等。
  2. 创建RIFF总文件大小合适的标题
  3. 创建适当的FMT标题
  4. 创建DATA具有总音频数据大小的正确标题

该算法肯定适用于LPCM,ULAW,ALAW音频格式。不确定其他人。



 类似资料:
  • 我设法通过电话麦克风录制声音,并在电话扬声器或耳机上听到它。但是当耳机有麦克风时,通常是免提的,默认情况下它使用免提麦克风录制声音。我需要以某种方式静音免提麦克风和使用电话麦克风。在Android系统中可能吗? 我还没找到任何答案。在android开发人员中,Stackoverflow一事无成。提前感谢!

  • 我正在尝试使用MediaCodec和MediaMuxer对来自相机的视频和来自麦克风的音频进行编码。我在录制时使用OpenGL在图像上覆盖文本。 我以这些课程为例: http://bigflake.com/mediacodec/CameraToMpegTest.java.txt https://github.com/OnlyInAmerica/HWEncoderExperiments/blob/m

  • 当我使用ffmpeg从wmv转换到mp4时,我的音频质量很差。我的ffmpeg命令如下: 有人能建议我如何在不降低任何质量的情况下转换视频吗?

  • 我试图使用alsa同时播放两个wav文件。请注意,wav文件具有不同的采样率。这是可能的,音频流被混合并发送到音频芯片。(我正在嵌入式linux设备上开发。)但有一个流的播放速度比正常快几倍。所以我猜重新采样有问题。 我有一个默认设备,在 /etc/asound.conf中启用了dMix插件,并将采样率设置为44100Hz。但据我所知,ALSA在内部将所有流重新采样为48khz并混合它们,然后再次

  • 我正在修改一个Android框架示例,将MediaCodec生成的基本AAC流打包成一个独立的。mp4文件。我使用的是一个实例,其中包含一个由实例生成的AAC曲目。 然而,我总是最终得到一个错误消息调用:

  • 我正在使用下面的命令合并音频和视频- 有几个视频我得到了以下的错误- 我在创建水印的时候也犯了类似的错误-