我目前正在开发一个记录音频并保存文件的应用程序。现在我正在寻找一种解决方案,将音频文件从一个位置分割(例如:分成两半,有2个音频文件)并注册另一个音频文件。最后,我需要连接所有音频文件(2个或更多文件)来创建一个文件。 我需要在Xamarin.Android中完成所有这些 有没有人做过这类事情?没有任何图书馆可以做到这一点吗?如果没有,我应该使用什么库来切割和连接音频文件。 我很感激任何回应。
答案 0 :(得分:0)
我试过的是访问音频文件的内存流。您可以访问每个字节,以便知道要将其剪切的位置。
例如,如果您尝试将Wav文件剪切为2个文件:
以Wav Header开头创建一个新的byte [](这将是你的第二个
public static void WriteWaveHeader (this Stream stream, int channelCount, int sampleRate, int bitsPerSample)
{
using (var writer = new BinaryWriter (stream, Encoding.UTF8))
{
writer.Seek (0, SeekOrigin.Begin);
//chunk ID
writer.Write ('R');
writer.Write ('I');
writer.Write ('F');
writer.Write ('F');
writer.Write (-1); // -1 - Unknown size
//format
writer.Write ('W');
writer.Write ('A');
writer.Write ('V');
writer.Write ('E');
//subchunk 1 ID
writer.Write ('f');
writer.Write ('m');
writer.Write ('t');
writer.Write (' ');
writer.Write (16); //subchunk 1 (fmt) size
writer.Write ((short) 1); //PCM audio format
writer.Write ((short) channelCount);
writer.Write (sampleRate);
writer.Write (sampleRate * 2);
writer.Write ((short) 2); //block align
writer.Write ((short) bitsPerSample);
//subchunk 2 ID
writer.Write ('d');
writer.Write ('a');
writer.Write ('t');
writer.Write ('a');
//subchunk 2 (data) size
writer.Write (-1); // -1 - Unknown size
}
}
n.b。 :我正在使用 Plugin.AudioRecorder 来录制声音并访问其流。它还支持实时流访问。