在这种情况下,我试图获取存储在Azure存储中的.WAV音频的URI。下面是服务代码片段:
var tempAudioUrl = _blobStorareService.UploadFileToBlob(file.FileName, file.ReadFully(), file.ContentType);
var audioFile = await AudioConverter.ConvertToMp3Async(new Uri(string.Format(tempAudioUrl)));
var audioUrl = _blobStorareService.UploadFileToBlob(Guid.NewGuid().ToString(), audioFile, "audio/mp3");
_blobStorareService.DeleteBlobData(tempAudioUrl);AudioConverter类的代码:
public static class AudioConverter
{
public static async Task<byte[]> ConvertToMp3Async(Uri uri)
{
using (var client = new WebClient())
{
var file = await client.DownloadDataTaskAsync(uri);
var target = new WaveFormat(8000, 16, 1);
using (var outPutStream = new MemoryStream())
using (var waveStream = new WaveFileReader(new MemoryStream(file)))
using (var conversionStream = new WaveFormatConversionStream(target, waveStream))
using (var writer = new LameMP3FileWriter(outPutStream, conversionStream.WaveFormat, 32, null))
{
conversionStream.CopyTo(writer);
return outPutStream.ToArray();
}
}
}
}如果有人知道答案,我将非常感激。
发布于 2022-03-01 08:15:03
在使用WaveFormatConversionStream之前,应该先使用RawSourceWaveStream。它可以帮助你解决这个问题。
原因:if you have a 16kHz stereo file, you can't go to an 8kHz mono file in one go.
相关职位:
https://stackoverflow.com/questions/71272006
复制相似问题