本文整理汇总了C#中NAudio.Wave.Mp3FileReader.Seek方法的典型用法代码示例。如果您正苦于以下问题:C# Mp3FileReader.Seek方法的具体用法?C# Mp3FileReader.Seek怎么用?C# Mp3FileReader.Seek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NAudio.Wave.Mp3FileReader
的用法示例。
在下文中一共展示了Mp3FileReader.Seek方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MakeSnaps
public bool MakeSnaps(int _snapsize, int _snapcount, string _path, int smooth_size)
{
try
{
using (Mp3FileReader pcm = new Mp3FileReader(_path))
{
int samplesDesired = _snapsize;
int blockscount = _snapcount;
snap_size = _snapsize;
snap_count = _snapcount;
total_samples = pcm.Length;
length = pcm.TotalTime.Seconds;
path = _path;
if ((pcm.WaveFormat.SampleRate != 44100) || (pcm.WaveFormat.BitsPerSample != 16))
return false;
for (int i = 0; i < blockscount; i++)
{
byte[] buffer = new byte[samplesDesired * 4];
short[] left = new short[samplesDesired];
short[] right = new short[samplesDesired];
double[] leftd = new double[samplesDesired];
double[] rightd = new double[samplesDesired];
int bytesRead = 0;
//for (int j = 0; j < 1; j++) ///////////
int seek_counter = 0;
seek: pcm.Seek((i + 1) * (i + 1) * (i + 1) * blockscount * samplesDesired % (total_samples - samplesDesired), SeekOrigin.Begin);
seek_counter++;
bytesRead = pcm.Read(buffer, 0, 4 * samplesDesired);
int index = 0;
for (int sample = 0; sample < bytesRead / 4; sample++)
{
left[sample] = BitConverter.ToInt16(buffer, index); index += 2;
right[sample] = BitConverter.ToInt16(buffer, index); index += 2;
}
if (left.Average(t => Math.Abs(t)) == 0)
if (seek_counter > 5)
return false;
else
goto seek;
//snap_log10_energy.Add(Math.Log10(left.Average(t => Math.Abs(t))));
leftd = Normalize(left, left.Length);
rightd = Normalize(right, right.Length);
//alglib.complex[] fl;
//alglib.fftr1d(leftd, out fl);
//fl[0].x;
FourierTransformer ft = new FourierTransformer(samplesDesired);
var xxa = new Complex[leftd.Length];
for (int j = 0; j < leftd.Length; j++)
xxa[j] = new Complex(leftd[j], rightd[j]);
var ftt = ft.Transform(xxa);
List<double> pow_re_im = new List<double>();
//List<double> arg_re_im = new List<double>();
ftt.ToList().ForEach(t => pow_re_im.Add(ComplexMath.Abs(t)));
//ftt.ToList().ForEach(t => arg_re_im.Add(ComplexMath.Arg(t)));
/*if (Double.IsNaN(MC_Log10_Energy(pow_re_im)))
if (seek_counter > 5)
return false;
else
goto seek;*/
fft_snaps.Add(pow_re_im);
//fft_smoothed_snaps.Add(Smoothen(pow_re_im, smooth_size));
//pow_re_im = Normalize(pow_re_im);
/*
var f_pwri = pow_re_im.Average(t => Math.Abs(t));
for (int k = 0; k < pow_re_im.Count; k++)
pow_re_im[k] = (Math.Abs(pow_re_im[k]) >= f_pwri * 1.5) ? pow_re_im[k] : 0;
*/
/*
FourierTransformer ft2 = new FourierTransformer(samplesDesired);
var xx2 = new List<Complex>();
for (int j = 0; j < pow_re_im.Count; j++)
{
xx2.Add(new Complex(pow_re_im[j], arg_re_im[j]));
}
var ftt2 = ft2.Transform(xx2);
//var ftt2 = ft2.Transform(ftt);
List<double> pow_re_im2 = new List<double>();
ftt2.ToList().ForEach(t => pow_re_im2.Add(ComplexMath.Abs(t)));
//.........这里部分代码省略.........
示例2: Mp3ToPcm
public RawAudioData Mp3ToPcm(string fileName)
{
var resStream = new MemoryStream();
var result = new RawAudioData();
if (File.Exists(fileName))
{
using (var mp3 = new Mp3FileReader(fileName))
{
var frame0 = mp3.ReadNextFrame();
result.SampleRate = frame0.SampleRate;
result.BitRate = frame0.BitRate;
mp3.Seek(0, SeekOrigin.Begin);
mp3.CopyTo(resStream);
}
}
result.Data = resStream.ToArray();
return result;
}