GVKun编程网logo

使用RandomAccessFile进行音频附加(randomaccessfile使用场景)

4

如果您想了解使用RandomAccessFile进行音频附加的相关知识,那么本文是一篇不可错过的文章,我们将对randomaccessfile使用场景进行全面详尽的解释,并且为您提供关于android

如果您想了解使用RandomAccessFile进行音频附加的相关知识,那么本文是一篇不可错过的文章,我们将对randomaccessfile使用场景进行全面详尽的解释,并且为您提供关于android – 使用RandomAccessFile进行音频附加、FileChannel与RandomAccessFile io api、IO流之randomAccessFile、JAVA IO - RandomAccessFile的有价值的信息。

本文目录一览:

使用RandomAccessFile进行音频附加(randomaccessfile使用场景)

使用RandomAccessFile进行音频附加(randomaccessfile使用场景)

我使用以下代码将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));}

答案1

小编典典

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

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

[RIFF HEADER]...totalFileSize    [FMT CHUNK]...audioFormatfrequencybytesPerSamplenumberOfChannels...[DATA CHUNK]dataSize<audio data>

您需要做的是:

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

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

android – 使用RandomAccessFile进行音频附加

android – 使用RandomAccessFile进行音频附加

我使用以下代码将sdcard中存在的wav文件追加到单个文件中. audFullPath是一个包含audiofiles路径的arraylist.这是正确的吗.当我播放录制的音频1时,执行此操作后.它只播放第一个文件.我想播放所有文件.任何建议..

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>

你需要做的是:

>确保所有WAV文件兼容:相同的audioFormat,频率,每个样本的位数,通道数等.
>使用总文件大小创建正确的RIFF标头
>创建正确的FMT标头
>使用总音频数据大小创建正确的DATA标头

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

FileChannel与RandomAccessFile io api

FileChannel与RandomAccessFile io api

IO流之randomAccessFile

IO流之randomAccessFile

randomAccessFile raf =new randomAccessFile(file,"rw");
关于写入的操作:
raf.write();//这里只能写一个字节(后八位) 同时指针也会跟着后移
raf.writeInt()//能直接写入一个整形
String s="中";
byte[]gbk=s.getBytes("gbk");//括号里面写的是编码的方式
raf.write(gbk)//这里可以直接写入一串字符


关于读取的操作:
//首先进行的是把指针移到头部、
raf.seek(0);
//然后创建的是存储的数组
byte[]b=new byte[(int)(raf.length())];
//单独打read得到的是一个字节
raf.read();
//也可以同时读取一个数组
raf.read(b);

//要在控制台上打印出结果,可以把数组转化成字符串
System.out.println(Arrays.toString(b));
//或者
String s=new String(b);
System.out.println(s);








JAVA IO - RandomAccessFile

JAVA IO - RandomAccessFile

RandomAccessFile

The RandomAccessFile class in the Java IO API allows you to move around a file and read from it or write to it as you please. 

Here is a thing the JavaDoc forgets to mention: The read() method increments the file pointer to point to the next byte in the file after the byte just read! This means that you can continue to call read() without having to manually move the file pointer.

import java.io.RandomAccessFile;


public class RandomAccessFileTest {
    public static void main(String args[]){
    	try{
    	 RandomAccessFile file = new RandomAccessFile(
    		        "c:\\work\\hello\\helloworld.txt", "rw");
    		    file.writeBytes("hello world!");
    		    file.writeChar(''A'');
    		    file.writeInt(1);
    		    file.writeBoolean(true);
    		    file.writeFloat(1.0f);
    		    file.writeDouble(1.0);
    		    file.close();
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
}



今天关于使用RandomAccessFile进行音频附加randomaccessfile使用场景的介绍到此结束,谢谢您的阅读,有关android – 使用RandomAccessFile进行音频附加、FileChannel与RandomAccessFile io api、IO流之randomAccessFile、JAVA IO - RandomAccessFile等更多相关知识的信息可以在本站进行查询。

本文标签: