我正在开发适用于音频数据的UWP应用程序(适用于Windows 10).它以浮点数样本的形式在开始时接收样本缓冲区,这些项目从-1f变为1f.之前我使用过NAudio.dll 1.8.0,它提供了所有必要的功能.使用WaveFileReader,waveBuffer.FloatBuffer,WaveFileWriter类.但是,当我完成此应用程序并尝试构建Relese版本时,出现此错误:ILT0042:当前不支持指针类型的数组:'System.Int32*[]'.
我试图解决它:
1)https://forums.xamarin.com/discussion/73169/uwp-10-build-fail-arrays-of-pointer-types-error
有建议删除.dll的链接,但我需要它.
2)我尝试使用Manage NuGet Packages安装相同版本的NAudio,但WaveFileReader,WaveFileWriter不可用.
3)在NAudio开发人员的回答中(如何使用NAudio在Windows 10中存储.wav文件)我已经阅读了有关使用AudioGraph的内容,但我只能在实时播放中构建浮点数组样本,但我需要获取完整的示例包音频文件上传后立即.在录制过程或播放过程中获取样本的示例:https: //docs.microsoft.com/ru-ru/windows/uwp/audio-video-camera/audio-graphs
这就是我需要帮助的原因:如何在音频文件上传后让FloatBuffer处理样本?例如,用于构建音频波或计算音频效果应用.
先感谢您.
我曾尝试使用FileStream和BitConverter.ToSingle(),但是与NAudio相比,我有不同的结果.换句话说,我仍在寻找解决方案.
private float[] GetBufferArray()
{
string _path = ApplicationData.Current.LocalFolder.Path.ToString() + "/track_1.mp3";
FileStream _stream = new FileStream(_path, FileMode.Open);
BinaryReader _binaryReader = new BinaryReader(_stream);
int _dataSize = _binaryReader.ReadInt32();
byte[] _byteBuffer = _binaryReader.ReadBytes(_dataSize);
int _sizeFloat = sizeof(float);
float[] _floatBuffer = new float[_byteBuffer.Length / _sizeFloat];
for (int i = 0, j = 0; i < _byteBuffer.Length - _sizeFloat; i += _sizeFloat, j++)
{
_floatBuffer[j] = …Run Code Online (Sandbox Code Playgroud)