我正在尝试实现以下代码,我发现here
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Media;
using NAudio.Wave;
namespace AAC2WAV
{
class Program
{
static void Main(string[] args)
{
// create media foundation reader to read the AAC encoded file
using (MediaFoundationReader reader = new MediaFoundationReader(args[0]))
// resample the file to PCM with same sample rate, channels and bits per sample
using (ResamplerDmoStream resampledReader = new ResamplerDmoStream(reader,
new WaveFormat(reader.WaveFormat.SampleRate, reader.WaveFormat.BitsPerSample, reader.WaveFormat.Channels)))
// create WAVe file
using (WaveFileWriter waveWriter = new WaveFileWriter(args[1], resampledReader.WaveFormat))
{
// copy samples
resampledReader.CopyTo(waveWriter);
}
}
}
}
输入文件是* .aac(args [0])输出文件应为* .wav(args [1])。 我正在运行编译的代码作为控制台应用程序,我没有错误,但它似乎挂起一旦它创建0 KB大小的wav文件
我想知道是否有我遗漏的东西或者我需要进一步了解的东西。
Windows将* .aac文件报告为ADTS。
也许我需要提取和重写标题,但我根本不熟悉AAC,如果认为有必要,会就这方面寻求一些指导。
当我尝试使用WMP打开文件时,它说它无法连接到服务器(建议编解码器问题),但是我可以将它与FFMPEG一起转换为wav文件而不会有任何问题。对于我正在研究的特定实现,使用FFMPEG并不理想。
非常感谢任何协助。
有关实际文件的信息:
General
Complete name : C:\Users\....\AAC2WAV\bin\Debug\0cc409aa-f66c-457a-ac10-6286509ec409.aac
Format : ADIF
Format/Info : Audio Data Interchange Format
File size : 180 KiB
Overall bit rate mode : Constant
Audio
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : Main
Bit rate mode : Constant
Channel(s) : 14 channels
Channel positions : , Back: 14
Sampling rate : 96.0 kHz
Frame rate : 93.750 FPS (1024 spf)
Compression mode : Lossy
Stream size : 180 KiB (100%)
使用以下文件从文件收集的信息:MediaInfo
我应该在这里补充一下,我相信以上信息的下半部分是不正确的。 采样率不是96k,它是22050,只有1个通道
答案 0 :(得分:0)
您不需要重新采样器 - MediaFoundationReader
已经返回PCM。您还应该使用WaveFileWriter.CreateWaveFile
这应该是你所需要的:
using (var reader = new MediaFoundationReader("myfile.aac"))
{
WaveFileWriter.CreateWaveFile("pcm.wav", reader);
}