失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Wav音频文件剪切指定片段(限PCM格式)

Wav音频文件剪切指定片段(限PCM格式)

时间:2022-02-25 20:38:55

相关推荐

Wav音频文件剪切指定片段(限PCM格式)

/// <summary>/// 读取wav文件然后剪切/// </summary>/// <param name="inPath">目标文件</param>/// <param name="outPath">输出文件</param>/// <param name="cutFromStart">开始时间</param>/// <param name="cutFromEnd">结束时间</param>public void TrimWavFile(string inPath, string outPath, TimeSpan cutFromStart, TimeSpan cutFromEnd){using (WaveFileReader reader = new WaveFileReader(inPath)){using (WaveFileWriter writer = new WaveFileWriter(outPath, reader.WaveFormat)){int bytesPerMillisecond = reader.WaveFormat.AverageBytesPerSecond / 1000;int startPos = (int)cutFromStart.TotalMilliseconds * bytesPerMillisecond;startPos = startPos - startPos % reader.WaveFormat.BlockAlign;int endBytes = (int)cutFromEnd.TotalMilliseconds * bytesPerMillisecond;endBytes = endBytes - endBytes % reader.WaveFormat.BlockAlign;//int endPos = (int)reader.Length - endBytes;TrimWavFile(reader, writer, startPos, endBytes);}}}/// <summary>/// 重新合并wav文件/// </summary>/// <param name="reader">读取流</param>/// <param name="writer">写入流</param>/// <param name="startPos">开始流</param>/// <param name="endPos">结束流</param>private static void TrimWavFile(WaveFileReader reader, WaveFileWriter writer, int startPos, int endPos){reader.Position = startPos;byte[] buffer = new byte[1024];while (reader.Position < endPos){int bytesRequired = (int)(endPos - reader.Position);if (bytesRequired > 0){int bytesToRead = Math.Min(bytesRequired, buffer.Length);int bytesRead = reader.Read(buffer, 0, bytesToRead);if (bytesRead > 0){writer.WriteData(buffer, 0, bytesRead);}}}}

导入NAudio.dll

下载/download/qq_33670936/10548691

如果觉得《Wav音频文件剪切指定片段(限PCM格式)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。