c# - 包装 MemoryStream
问题描述
https://stackoverflow.com/questions/39328396/prepend-wav-header-in-naudio# = Mark Heath 说:“您可以使用 WaveFileWriter 写入流。所以在这种情况下,我会写入 MemoryStream , 并且 WaveFileWriter 必须被释放才能正确地完成 WAV 标头。但是你将拥有一个 WAV 文件的内存表示。
需要注意的是,当你处理 WaveFileWriter 时,你最终可能会处理 MemoryStream,所以我在 NAudio 中有一个名为 IgnoreDisposeStream 的便利类,你可以将 MemoryStream 包装进去,以阻止它在使用之前被处理掉。”
如何在 C# 中包装内存流?
解决方案
public static void ConvertMemoryStreamToWavFile(ref MemoryStream ids, ref
MemoryStream ms)
{
ids.Seek(0, SeekOrigin.Begin);
using (var writer = new WaveFileWriter(new IgnoreDisposeStream(ms), new WaveFormat(22000, 16, 1)))
{
ids.CopyTo(writer);
writer.Flush();
writer.Close();
writer.Dispose();
}
}
推荐阅读
- swift - 使用 AudioConverter 更改采样率
- c# - 在 C# 和 ASP.NET MVC razor 视图中使用数据库中的值填充 css 属性
- java - JVM 运行时动态类生成
- spring - Spring Boot 无法解析 aws 参数存储变量
- html - 使用 html5 在 safari 上渲染 SVG 时出现问题
- python - NumPy 中的包容性索引提供了与使用单个索引不同的维度
- groovy - 在运行时实例化接口的 Groovy 方法?
- maven - Jenkins Artifactory 插件:artifactDeploymentPatterns.addInclude 等效于声明性管道
- c# - 我的 ListView 两次显示相同的项目。我如何解决它?
- machine-learning - Minimax 算法,机器学习还是深度学习?