我有一些简单的代码使用TTS生成一个wave文件然后播放它:
MappingJackson2XmlHttpMessageConverter
一切正常,但在开始播放wave文件之前我想知道它会持续多长时间。有没有计算这个的方法,还是可以在某个地方使用?
如果它在某处可用,它是如何计算的?我假设它与流中的数据量有关,但是如何?
答案 0 :(得分:4)
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;
}
持续时间是根据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评论)