如何把立体声合并成单声道?

dingxiaoying 2008-01-04 11:16:14
16位的pcm数据,如何把16位的立体声合并成16位的单声道?下面是用软件转换来的部分数据,但是找不出规律,请牛们看看。


这是立体声




这是单声
...全文
2977 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nitty 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 oversense 的回复:]
哈哈,搂主要明白 什么是 波形,什么是采样,什么是量化,什么是pcm数据,什么是立体声,就全明白了
[/Quote]

你就是个SB.牛B就整出来个所以然.说的都是P话.让人看不起.
上网一查翻到这个老帖,好多年没来CSDN了.不知道你解决没有.如果两个都是立体声,我用以下方式没问题.
sample1,sample2.两个wave的每个字节
if ((sample1 < 0) && (sample2 < 0))
{
value = sample1 + sample2 - (sample1 * sample2 / -(pow(2,16-1)-1));
}
else
{
value = sample1 + sample2 - (sample1 * sample2 / (pow(2,16-1)-1));
}

但我现在是MONO的单声道想与立体声合并.都是16位的采样,22KHz采样级别.位速也不同.用这个肯定不行.
弄了一整天了.所以彻底迷糊.郁闷中.

dingxiaoying 2008-01-09
  • 打赏
  • 举报
回复
好像不能取8位,要取16位才对,怎么和数据格式对不上呢?
dingxiaoying 2008-01-09
  • 打赏
  • 举报
回复
16位立体声的pcm数据存放是前8位左声道,后8位右声道,如果我只取每个16位数据的前8位就是左声道的数据,这样播放出来有噪音,只取每个16位的后8位就是右声道,这个就不能形成音乐了。是我取错了?
AgedBOY 2008-01-09
  • 打赏
  • 举报
回复
“16位立体声的pcm数据存放是前8位左声道,后8位右声道,如果我只取每个16位数据的前8位就是左声道的数据,这样播放出来有噪音,只取每个16位的后8位就是右声道,这个就不能形成音乐了。是我取错了?”

………………………………
Oversense 2008-01-08
  • 打赏
  • 举报
回复
哈哈,搂主要明白 什么是 波形,什么是采样,什么是量化,什么是pcm数据,什么是立体声,就全明白了
henryjee 2008-01-08
  • 打赏
  • 举报
回复
不要相加,直接取一个声道
dingxiaoying 2008-01-08
  • 打赏
  • 举报
回复
up
AgedBOY 2008-01-08
  • 打赏
  • 举报
回复
“觉得相加的牛们试试播放wav的两个声道,不要用软件播放,自己编个,wav是立体声的,看看左和右是不是都一样清晰。”

我觉得你上面的建议,应该首先自己解释一下实施细则。我没看懂你是想让“觉得相加的牛们”如何实验?
dingxiaoying 2008-01-08
  • 打赏
  • 举报
回复
觉得相加的牛们试试播放wav的两个声道,不要用软件播放,自己编个,wav是立体声的,看看左和右是不是都一样清晰。
AgedBOY 2008-01-08
  • 打赏
  • 举报
回复
waterblood说的均值公式看起来挺强的,可是我觉得中学物理课就告诉过我们波形叠加其实就是振幅叠加这个道理。我认为现实生活中的多路声音进入耳朵,就是直接相加的。而且振幅是有方向的,振幅相加不一定使震动更剧烈啊。

所以我觉得就应该直接加,当然要防止超过取值范围即可。但如果你的PCM Buffer是无符号的,就不能直接加了,应该转换到有符号的空间里再加。

最后我以前的程序里就是直接加,没有听到什么噪音。
waterblood 2008-01-08
  • 打赏
  • 举报
回复
按能量算比较合理些, l^2+r^2/2开根号就行
aliboy 2008-01-08
  • 打赏
  • 举报
回复
研究一下lame,他可以把立体声转为单声道.
Oversense 2008-01-07
  • 打赏
  • 举报
回复
A+B=C
就这么简单,判断下溢出
henryjee 2008-01-07
  • 打赏
  • 举报
回复
对啊,把左右声道,赋值成一个声道就可以了
dingxiaoying 2008-01-07
  • 打赏
  • 举报
回复
只是单纯地相加 或者相加除以2,都会产生噪音,因为立体声和双声道是不同的,立体声两个声道的数据不同,我只取其中一个声道播放时,有一个声道根本不能听,可见不是相加那么简单。
huntsman008 2008-01-05
  • 打赏
  • 举报
回复
1,PCM有一定的高低位格式的,如果是左右声道,可以把左声道的数据替换右声道的数据....
aoosang 2008-01-04
  • 打赏
  • 举报
回复
不知道

2,554

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧