我使用libswresample从任何PCM格式44.1,16位整型,立体声重新取样。
我玩弄产生的音频流的一些音频音量分析,我想通了,万一我有44.1kHz的,16位INT单为源,我有大致的表现公式:
leftSample = sourceSample / sqrt(2);
rightSample = sourceSample / sqrt(2);
但我期待:
leftSample = sourceSample;
rightSample = sourceSample;
(在情况下,源是立体声的,我只是有leftSample = leftSourceSample; rightSample = rightSourceSample;
我期待来自几个方面:
- 这是怎么我自己直接的解决方案很可能已经。
- 我搜索了一下四周,其他人似乎做同样,如这里 。
在一个很普通的播放增益实现(唯一一个我真的知道,使用基本上无处不在,我觉得首先从mp3gain;一个副本,可以看出这里 ),它也做的:
switch ( num_channels) { case 1: right_samples = left_samples; case 2: break; default: return GAIN_ANALYSIS_ERROR; }
这是ESP。 相关的,因为播放增益通过使用标准声(粉红噪声,可以下载此实现校准位置 ),这是单声道。
在播放增益规范,还计算出这样的(见这里 )。
我的困惑提出后,我试图执行的ReplayGain自己,我偶然发现了这一点。
因此,一些问题:
- 为什么libswresample做到这一点?
- 这个预期在libswresample或错误? (我想从源(例如,了解这里 ),但我还没有完全理解这一切呢。)我加了一个bug报告在这里 。
- 什么是“正确”的解决方案?
- 什么是其他球员在做什么?
- 什么是常见的声卡,如果你给单样本,以它做什么?
(我还张贴在这个问题上avp.stackexchange现在,也许这是一个更好的地方问这个,不知道。)