NAudio是一个开源语音处理库,但中文资料确实很少,还是得看github文档。
在网上搜索NAudio音频文件进行剪切,有的提供了一种方法是一个个字节读,感觉效率不高。另外我只想截取几秒到几秒内的音频,需要将字节换算成时间,还是挺麻烦的。
看源文档提供的范例是这样的

var source = new AudioFileReader("example.mp3");
var trimmed = new OffsetSampleProvider(source) {SkipOver = TimeSpan.FromSeconds(30),Take = TimeSpan.FromSeconds(60),
WaveFileWriter.CreateWaveFile16(outputFilePath, trimmed);

这里用到的OffsetSampleProvider,解决了我们的问题。
OffsetSampleProvider允许提取另一个ISampleProvider的片段。通过设置SkipOver可以跳过源ISampleProvider的时间 和设置Take来限制要截断多长时间的片段。你也可以通过设置DelayBy和LeadOut在音频前后增加延迟加长。
还可以支持扩展方法

var trimmed = new AudioFileReader("example.mp3").Skip(TimeSpan.FromSeconds(30)).Take(TimeSpan.FromSeconds(60));
WaveFileWriter.CreateWaveFile16(outputFilePath, trimmed);

除了按时间来截断,也可以通过采样字节数来进行

WaveFileReader source = new WaveFileReader("local.wav");
//与AudioFileReader有区别,WaveFileReader要转成ISampleProvider,下面的SkipOverSamples 与采样率有关系
var trimmed = new OffsetSampleProvider(source.ToSampleProvider()){//跳过多少帧SkipOverSamples = frame,//截取多少帧TakeSamples = len};

上面稍微注意一下是AudioFileReader与WaveFileReader有些区别,请看我上一篇文章:
https://blog.csdn.net/mountainlord/article/details/114769488

官方提供的范例全是写入文件的,有的时候可能会预览某一段音频,如果先保存再播放,会感觉比较别扭,其实生成的OffsetSampleProvider也是继承的ISampleProvider这个接口,所以播放时可以直接使用。
播放某一片段代码如下:

WaveOut m_tempWave = null;
public void PlayFrame(double start, double len)
{var source = new AudioFileReader("example.mp3");var trimmed = new OffsetSampleProvider(source) {SkipOver = TimeSpan.FromSeconds(start),Take = TimeSpan.FromSeconds(len),};m_tempWave = new WaveOut();m_tempWave.Init(trimmed);m_tempWave.Play();
}

使用NAudio音频文件剪切指定片段相关推荐

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

    /// <summary>/// 读取wav文件然后剪切/// </summary>/// <param name="inPath">目标文件& ...

  2. 如何将两个集合合并_如何将剪切的音频文件进行合并

    下面就和大家一起来学习如何将音频文件剪切为多个片段再重新合并在一起.剪辑所用的音频转换器有很多,但是得找到一款合适自己的,下面小编就来为大家讲解一种方法. 使用工具: 音频转换器https://www ...

  3. 如何将剪切的音频文件进行合并

    下面就和大家一起来学习如何将音频文件剪切为多个片段再重新合并在一起.剪辑所用的音频转换器有很多,但是得找到一款合适自己的,下面小编就来为大家讲解一种方法. 方法步骤: 1.记得将素材都准备好,并将素材 ...

  4. 如何实现在直播中播放音频文件

    在我们看直播的时候,经常会在直播过程中听到有掌声.口哨声.背景音乐等音效,那么这些声音特效是如何实现的呢大家有没有想过?anyRTC下面就为大家简单介绍一下如何实现在直播过程中播放音频文件. 功能描述 ...

  5. ffmpeg批量合并截取音频文件

    1 .多个mp3文件合并成一个mp3文件 一种方法是连接到一起 ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy outp ...

  6. Java 添加音频到ppt_Java 添加 、读取以及删除PPT幻灯片中的视频、音频文件

    在PPT中,可以操作很多种元素,如形状.图形.文字.图片.表格等,也可以插入视频或者音频文件,来丰富幻灯片的内容呈现方式.下面将介绍在Java程序中如何来添加视频.音频文件到PPT幻灯片,读取和删除幻 ...

  7. Java 添加、读取、删除PPT幻灯片中的视频、音频文件

    概述及程序环境 在PPT中,可以操作很多种元素,如形状.图形.文字.图片.表格等,也可以插入视频或者音频文件,来丰富幻灯片的内容呈现方式.下面将介绍在Java程序中如何来添加视频.音频文件到PPT幻灯 ...

  8. 剪切音频文件是处理音频数据

    剪切音频文件是处理音频数据的最基本功能之一 pydub库使之变得超级简单.就像关于裁剪和调整图片的那篇文章一样,这个程序能够进入一级Python类别的唯一原因是使用了一个外部库. 在这篇文章中,我们将 ...

  9. 如何剪切音频文件?分享这个好方法

    音乐是人类文化的重要组成部分,而音频剪切是一项使我们能够对音乐进行个性化处理和编辑的技术. 无论是制作个人音乐作品还是进行音频编辑,学会音频剪切都是非常有用的.本文将带你深入了解怎么音乐剪切音频的科学 ...

最新文章

  1. 42、Power Query-Text.Remove函数应用
  2. Kafka学习笔记-Java简单操作
  3. 外设驱动库开发笔记1:AD56xx系列DAC驱动
  4. Python-OpenCV 处理图像(一):基本操作 cv2
  5. pyqt5与html数据交互原理,pyqt5与本地html进行js交互
  6. Spring Boot 项目总是创建失败,这几个备选方案一定要收藏
  7. Day01_FAT12 文件系统
  8. mysql 时间设置
  9. 怎样用计算机粉碎文件夹,怎么使用电脑文件管家粉碎功能
  10. matlab 滤波器设计工具,滤波器设计工具快速入门
  11. python爬取58同城租房信息
  12. B站秋招编程题:扭蛋机
  13. maya2018英文翻译_maya2018英文怎么切换中文?
  14. Iphone X黑科技大揭秘,这几大摄像功能是要上天!
  15. 零基础Bootstrap入门教程(25)--折叠面板、折叠面板导航
  16. java Android创建容器,Java-在具有(没有)DI容器的Android中正确进行依赖项注入(匕首1)...
  17. 【人工智能】李开复MIT演讲:这5个原因将导致中国AI赶超美国
  18. 《白话大数据与机器学习》读书笔记3
  19. 微信小程序 自定义头部导航栏
  20. 音视频 测试分享-基础工具篇

热门文章

  1. Vue3生命周期函数的那些事
  2. vue + echarts 之饼形图
  3. 爬取链家二手房交易数据
  4. php 获取header头信息并显示网址,php 获取远程网址header头信息的方法
  5. 使用Python以UCI心脏病数据集为例,进行数据简单分析
  6. mysql-使用Navicat导出sql查询数据
  7. 收藏!人工智能学习路径总结
  8. 华为服务器 自动安装 黑屏,华为服务器显示器黑屏如何解决
  9. web前端学习26(锚点链接)
  10. ios手机编辑html转pdf文件,苹果手机居然能一键转换PDF文件?iPhone老司机才知道...