我有MemoryStream
从在线读取音频,然后将其保存到FileStream
。音频播放可以很好地解决一个问题,即剪辑的前30-40毫秒是死音,并且在每次分割开始时都是静音。这是有问题的,因为我需要将音频片段分成多个文件以便以后无缝播放。 mp3数据中是否有某个字节或十六进制表示mp3的帧开始/结束时尝试将其分割到正确的位置?代码中的内容会是什么样?
在这个简单的FileStream
保存中,您可以看到,在我的实验中,即使我尝试在开始时剪掉那个死角,它仍会创建死区 - 让我觉得我正在分割声音文件在一个不正确的位置,然后玩家无法读取该帧 - 但我怎么能克服这个?
byte[] byteArray = ms.ToArray();
using (FileStream fs = new FileStream(destPath + filename + ".mp3", FileMode.Create))
{
fs.Write(byteArray, 0, byteArray.Length);
}
剪切回来试图在开始时摆脱那个死区只是为了测试:
byte[] oldArray = ms.ToArray();
byte[] newArray = new byte[oldArray.Length - 1000];
Array.Copy(oldArray, 1000, newArray, 0, newArray.Length);
using (FileStream fs = new FileStream(destPath + filename + ".mp3", FileMode.Create))
{
fs.Write(newArray, 0, newArray.Length);
}
检查正在保存的mp3的字节数组,当我将其转换为文本时,即使在死区中也存储了数据但由于某种原因它只是不播放。正如我所说,我猜这是与文件在声音框架中间错误地分开的东西有什么关系?对不起,如果我使用了错误的术语。