波形文件的时间长度

时间:2016-02-09 19:03:34

标签: c# cscore

我有一些简单的代码使用TTS生成一个wave文件然后播放它:

MappingJackson2XmlHttpMessageConverter

一切正常,但在开始播放wave文件之前我想知道它会持续多长时间。有没有计算这个的方法,还是可以在某个地方使用?

如果它在某处可用,它是如何计算的?我假设它与流中的数据量有关,但是如何?

3 个答案:

答案 0 :(得分:4)

您可以使用CSCoreNAudio

CSCore (摘自this sample,使用当前播放位置和总持续时间here):

using System;
using CSCore;
using CSCore.Codecs.WAV;

IWaveSource wavSource = new WaveFileReader(stream);
TimeSpan totalTime = wavSource.GetLength();

<强> n音讯

using System;
using NAudio.Wave;

using (var wfr = new WaveFileReader(stream))
{
    TimeSpan totalTime = wfr.TotalTime;
}

另见the MSDN docs for TimeSpan

持续时间是根据WAVE数据的总长度(可以是压缩文件的估计值)和每秒平均字节数(根据属性TotalTime中的NAudio source)计算的:< / p>

totalTimeInSeconds = LengthInBytes / AverageBytesPerSecond;

答案 1 :(得分:0)

using CSCore;

IWaveSource waveSource = new WaveFileReader(stream);
TimeSpan totalTime = waveSource.GetLength( ); //get length returns a timespan

答案 2 :(得分:0)

万一有人在寻找解决方法,我会这样处理: (请原谅我的第一个StackOverflow评论)

  1. 我创建了bool mouseScrewsAround = false
  2. 在播放时更改trackBar位置的计时器事件,仅在!mouseScrewsAround时才触发
  3. trackBar_MouseDown-> mouseScrewsAround = true
  4. trackBar_MouseUp->更改轨道位置,然后mouseScrewsAround = false