网站建设论文选题表,网站只做1单生意被罚4万两级违法,电子商务物流,wordpress搜索页分类channel rematrix
Channel rematrix 是一种音频处理技术#xff0c;用于将多声道音频转换为不同的多声道格式。它可以将一个多声道音频信号从一种布局转换为另一种布局#xff0c;例如从 5.1 到 7.1 或从立体声到环绕声。
ffmpeg中的rematrix可以通过fixter完成#xff0c…channel rematrix
Channel rematrix 是一种音频处理技术用于将多声道音频转换为不同的多声道格式。它可以将一个多声道音频信号从一种布局转换为另一种布局例如从 5.1 到 7.1 或从立体声到环绕声。
ffmpeg中的rematrix可以通过fixter完成swresample也支持auto-rematrix。
ffmpeg -y -v 56 -i 1ch-16k.wav -filter_complex \
[0:a]panmono|c0c0[a0]; \
[0:a]panmono|c0c0[a1]; \
[0:a]panmono|c0c0[a2]; \
[0:a]panmono|c0c0[a3]; \
[0:a]panmono|c0c0[a4]; \
[0:a]panmono|c0c0[a5]; \
[0:a]panmono|c0c0[a6]; \
[0:a]panmono|c0c0[a7]; \
[0:a]panmono|c0c0[a8]; \
[0:a]panmono|c0c0[a9]; \
[0:a]panmono|c0c0[a10]; \
[0:a]panmono|c0c0[a11]; \
[a0][a1][a2][a3][a4][a5][a6][a7][a8][a9][a10][a11]amergeinputs12[aout] \
-map [aout] 12ch-16k.wav
这个命令将一个1声道、16kHz采样率的wav文件转换为12声道音频文件并且每个声道的内容都相同。下面是对命令的详细解释
-y覆盖输出文件不询问。-v 56设置日志级别为verbose输出更多详细信息。-i 1ch-16k.wav指定输入文件路径。-filter_complex ...使用复合滤镜进行处理。复合滤镜可以包含多个滤镜及其连接关系。[0:a]panmono|c0c0[a0]使用pan滤镜将输入音频流第0条流从单声道变成12个单独的声道之一第0号声道并将输出流命名为a0。[0:a]panmono|c0c0[a1]同上将输入流从单声道变成12个单独的声道之一第1号声道并将输出流命名为a1。…依次类推直到为所有12个声道都创建了一个新的输出流。[a0][a1][a2]...[a11]amergeinputs12[aout]使用amerge滤镜将12个单独的声道混合成一个12声道的音频流并将输出流命名为aout。其中inputs12表示输入流的数量为12。-map [aout]指定复合滤镜的输出流作为输出文件的音频流。12ch-16k.wav指定输出文件路径。
最终这个命令会将单声道音频文件转换为12声道音频文件每个声道的内容都相同。由于使用了pan滤镜所以输出文件中的每一个声道都来自于原始音频文件的左声道。如果需要使用右声道可以将c0c0修改为c0c1。
因为ffmpeg不支持12 channel播放所以这个播放的时候会报错需要指定layout才行比如12channel实际只播放8channel这个就先不尝试了。
因此发现ffmpeg中定义了下面的channel layout如果不是这里面的就需要指定channel layout
#define AV_CHANNEL_LAYOUT_MONO AV_CHANNEL_LAYOUT_MASK(1, AV_CH_LAYOUT_MONO)
#define AV_CHANNEL_LAYOUT_STEREO AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO)
#define AV_CHANNEL_LAYOUT_2POINT1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2POINT1)
#define AV_CHANNEL_LAYOUT_2_1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2_1)
#define AV_CHANNEL_LAYOUT_SURROUND AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_SURROUND)
#define AV_CHANNEL_LAYOUT_3POINT1 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_3POINT1)
#define AV_CHANNEL_LAYOUT_4POINT0 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_4POINT0)
#define AV_CHANNEL_LAYOUT_4POINT1 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_4POINT1)
#define AV_CHANNEL_LAYOUT_2_2 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_2_2)
#define AV_CHANNEL_LAYOUT_QUAD AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_QUAD)
#define AV_CHANNEL_LAYOUT_5POINT0 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0)
#define AV_CHANNEL_LAYOUT_5POINT1 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1)
#define AV_CHANNEL_LAYOUT_5POINT0_BACK AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0_BACK)
#define AV_CHANNEL_LAYOUT_5POINT1_BACK AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1_BACK)
#define AV_CHANNEL_LAYOUT_6POINT0 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0)
#define AV_CHANNEL_LAYOUT_6POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0_FRONT)
#define AV_CHANNEL_LAYOUT_HEXAGONAL AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_HEXAGONAL)
#define AV_CHANNEL_LAYOUT_6POINT1 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1)
#define AV_CHANNEL_LAYOUT_6POINT1_BACK AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_BACK)
#define AV_CHANNEL_LAYOUT_6POINT1_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_FRONT)
#define AV_CHANNEL_LAYOUT_7POINT0 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0)
#define AV_CHANNEL_LAYOUT_7POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0_FRONT)
#define AV_CHANNEL_LAYOUT_7POINT1 AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1)
#define AV_CHANNEL_LAYOUT_7POINT1_WIDE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE)
#define AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE_BACK)
#define AV_CHANNEL_LAYOUT_OCTAGONAL AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_OCTAGONAL)
#define AV_CHANNEL_LAYOUT_HEXADECAGONAL AV_CHANNEL_LAYOUT_MASK(16, AV_CH_LAYOUT_HEXADECAGONAL)
#define AV_CHANNEL_LAYOUT_STEREO_DOWNMIX AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO_DOWNMIX)
#define AV_CHANNEL_LAYOUT_22POINT2 AV_CHANNEL_LAYOUT_MASK(24, AV_CH_LAYOUT_22POINT2)这里面有16channel那么用这个复杂的graph可以生成16 channel的wav文件播放也正常
ffmpeg -y -v 56 -i 1ch-16k.wav -filter_complex \
[0:a]panmono|c0c0[a0]; \
[0:a]panmono|c0c0[a1]; \
[0:a]panmono|c0c0[a2]; \
[0:a]panmono|c0c0[a3]; \
[0:a]panmono|c0c0[a4]; \
[0:a]panmono|c0c0[a5]; \
[0:a]panmono|c0c0[a6]; \
[0:a]panmono|c0c0[a7]; \
[0:a]panmono|c0c0[a8]; \
[0:a]panmono|c0c0[a9]; \
[0:a]panmono|c0c0[a10]; \
[0:a]panmono|c0c0[a11]; \
[0:a]panmono|c0c0[a12]; \
[0:a]panmono|c0c0[a13]; \
[0:a]panmono|c0c0[a14]; \
[0:a]panmono|c0c0[a15]; \
[a0][a1][a2][a3][a4][a5][a6][a7][a8][a9][a10][a11][a12][a13][a14][a15]amergeinputs16[aout] \
-map [aout] 16ch-16k.wav这个实际上用最简单的-ac参数也可以
ffmpeg -y -v 56 -i 1ch-16k.wav -ac 16 out.wavpan filter的用法
混合具有特定增益水平的通道。filter接受输出通道布局后跟一组通道定义。
此filter还旨在有效地重新remap音频流的channels。
混合示例从立体声缩混到单声道但左声道的系数更大
pan1c|c00.9*c00.1*c1自定义缩混至立体声自动适用于 3、4、5 和 7 声道环绕声
panstereo| FL FL 0.5*FC 0.6*BL 0.6*SL | FR FR 0.5*FC 0.6*BR 0.6*SR给定相同的来源您还可以切换左前和右前声道并保持输入声道布局
pan5.1| c0c1 | c1c0 | c2c2 | c3c3 | c4c4 | c5c5如果输入是立体声音频流您可以将左前声道静音并仍然保持立体声声道布局
panstereo|c1c1仍然使用立体声音频流输入您可以在左前和右前复制右声道
panstereo| c0FR | c1FR学习完pan的用法之后前面的这个1声道转16声道命令可以简化为:
ffmpeg -y -v 56 -i 1ch-16k.wav -af \
panhexadecagonal | c0c0 | c1c0 | c2c0 | c3c0 | c4c0 \| c5c0 | c6c0 | c7c0 | c8c0 | c9c0 \| c10c0 | c11c0 | c12c0 | c13c0 | c14c0 | c15c0 \
12ch-16k.wav其中hexadecagonal来自ffmpeg中layout的定义通过-layouts可以看到
Standard channel layouts:
NAME DECOMPOSITION
mono FC
stereo FLFR
2.1 FLFRLFE
3.0 FLFRFC
3.0(back) FLFRBC
4.0 FLFRFCBC
quad FLFRBLBR
quad(side) FLFRSLSR
3.1 FLFRFCLFE
5.0 FLFRFCBLBR
5.0(side) FLFRFCSLSR
4.1 FLFRFCLFEBC
5.1 FLFRFCLFEBLBR
5.1(side) FLFRFCLFESLSR
6.0 FLFRFCBCSLSR
6.0(front) FLFRFLCFRCSLSR
hexagonal FLFRFCBLBRBC
6.1 FLFRFCLFEBCSLSR
6.1(back) FLFRFCLFEBLBRBC
6.1(front) FLFRLFEFLCFRCSLSR
7.0 FLFRFCBLBRSLSR
7.0(front) FLFRFCFLCFRCSLSR
7.1 FLFRFCLFEBLBRSLSR
7.1(wide) FLFRFCLFEBLBRFLCFRC
7.1(wide-side) FLFRFCLFEFLCFRCSLSR
octagonal FLFRFCBLBRBCSLSR
hexadecagonal FLFRFCBLBRBCSLSRTFLTFCTFRTBLTBCTBRWLWR
downmix DLDR
22.2 FLFRFCLFEBLBRFLCFRCBCSLSRTCTFLTFCTFRTBLTBCTBRLFE2TSLTSRBFCBFLBFR参考
AudioChannelManipulation
Convert Multiple audio tracks into a Single Track with 12 channels using ffmpeg