谁知道mp3单声道怎么转立体声

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁知道mp3单声道怎么转立体声相关的知识,希望对你有一定的参考价值。

全能音频转换通 v1.2 绿色特别版
媒体工具/音频转换/drg0508/AudioConverter-v1.2.rar打开转换通,添加文件,批量转换,输出质量先带“stereo”字样的,而mono字样的是单声道的,设置好后可以开始转换了。
参考技术A 可以使用GoldWave软件!在GoldWave里打开你要修改的MP3文件!之后直接点另存为!会弹出一个对话框!在对话框的下方的保存类型下有音质选项!看自己需要修改所需的频率和声道!点保存,OK了!GoldWave在各大软件站都有下载!(下载后记得先杀毒哦!)] 参考技术B 貌似mp3的声音是双声道的,你如果想改很简单,下载一个软件 audition 很简单 也很好下 迅雷上面肯定有 下过后 之选择一轨录制就ok了] 参考技术C 可以用一个小软件,goldwave,他是英文的,但是很方便实用,可以进行多种格式的音频转换与编辑。还不错,试试把。] 参考技术D 用千千静听,转换格式MP3,把配置中的立体声的选框的勾去掉]

如何使用 naudio 将立体声 pcm 样本转换为单声道样本

【中文标题】如何使用 naudio 将立体声 pcm 样本转换为单声道样本【英文标题】:How can i convert stereo pcm samples to mono samples using naudio 【发布时间】:2013-04-29 17:45:51 【问题描述】:

或将立体声 mp3 文件转换为单声道原始样本!

我之前试过这个:

for (int u = 0; u < output.Length; u+=4)
            
                byte[] Lbuffer = new byte[2];
                byte[] Rbuffer = new byte[2];
                Lbuffer[0] = output[u + 0];
                Lbuffer[1] = output[u + 1];
                Rbuffer[0] = output[u + 2];
                Rbuffer[1] = output[u + 3];

                Int16 leftSample = BitConverter.ToInt16(Lbuffer, 0);
                Int16 rightSample = BitConverter.ToInt16(Rbuffer, 0);

                Int16 mixedMono = (Int16)(0.5f * (float)leftSample + (float)rightSample);
                Byte[] mixedMonoBytes = BitConverter.GetBytes(mixedMono);

                mono[counter] = mixedMonoBytes[0];
                mono[counter+1] = mixedMonoBytes[1];


                //mono[counter] = Convert.ToByte((Convert.ToInt16(buffer[0]) + Convert.ToInt16(buffer[2]))/2);
                //mono[counter+1] = Convert.ToByte((Convert.ToInt16(buffer[0]) + Convert.ToInt16(buffer[2]))/2);
                counter += 2;
            

但它目前不起作用!结果有噪音! 输出是一个包含原始样本的数组!

【问题讨论】:

要将立体声转换为单声道,通常取一个立体声帧的两个样本并计算它们的平均值。结果就是你的单声道样本。 请阅读我的编辑! @user2326338 也许您可以提供更多详细信息来说明究竟是什么不起作用?您在输出文件中听到噪音? 你的左右混合方式是0.5 * left + right,是错误的;应该是 0.5 *(左 + 右)。此外,溢出可能会引起噪音;使用我在回答中建议的饱和算法。要检查的另一件事是数据的字节顺序——它是否与机器的字节序匹配,或者你需要字节交换吗? 理查德沃尔特斯!你的权利! 0.5 *(左+右)是正确的! 【参考方案1】:

正如@daniel-s 指出的那样,要将 PCM 样本从立体声(2 个通道)转换为单声道(1 个通道),您可以简单地取两个通道的平均值:对于每个样本,取左通道的值,将右通道的值相加,然后除以 2。使用saturation arithmetic 避免溢出。

要将 MP3 文件转换为原始 (PCM) 样本,您需要通过文件解析器和 MP3 比特流解码器运行 MP3 文件。有许多库和应用程序可以做到这一点。例如,请参阅FFmpeg。

[编辑] 我忘了说,更重要的是,NAudio 支持通过 ACM 或 DMO 编解码器解码 MP3 文件;有关示例,请参见 NAudio - MP3。

【讨论】:

您可以使用乘法代替:0.5 * (1.0 + 1.0) = 1.0 当然,如果您不介意使用浮点类型。有时这可能是一个问题,例如在某些嵌入式环境中。如果您不介意截断分数,可能最好的除以二的方法是进行位移:(1 + 1) &gt;&gt; 1 = 1 完全同意你的看法:-) 一些代码示例,我会按下那个向上按钮

以上是关于谁知道mp3单声道怎么转立体声的主要内容,如果未能解决你的问题,请参考以下文章

mp3格式转换后没有了立体声

iOS 将立体声 mp3 拆分为单声道 aac

音响单声道及立体声系统知识

如何使用 naudio 将立体声 pcm 样本转换为单声道样本

如何解释 MP3 文件中的原始 pcm 数据

我是不是需要将立体声音频转换为单声道以进行 FFT?