5.1声道转化为左右声道

2024-09-08 11:08
文章标签 转化 左右 5.1 声道

本文主要是介绍5.1声道转化为左右声道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

5.1声道转化为左右声道downmix
http://szfzafa.blog.163.com/blog/static/11895416720120724729214/
标题: Downmix 5.1ch to 2ch in AVS  
最简单:
function Dmix6Stereo(clip a) {  # 6 Channels L,R,C,LFE,SL,SR
  flr = GetChannel(a, 1, 2)
  fcc = GetChannel(a, 3, 3)
  lrc = MixAudio(flr, fcc, 0.3694, 0.2612) #忽略低音增强 不模拟相位差
  blr = GetChannel(a, 5, 6)
  return MixAudio(lrc, blr, 1.0, 0.3694)
}
左声道 =L*0.3694 + C*0.2612 + SL*0.3694
右声道 =R*0.3694 + C*0.2612 + SR*0.3694


function Dmix6Dpl(clip a) { # 6 Channels L,R,C,LFE,SL,SR
  flr = GetChannel(a, 1, 2)
  fcc = GetChannel(a, 3, 3)
  lrc = MixAudio(flr, fcc, 0.3205, 0.2265) #忽略低音增强 模拟相位差
  bl  = GetChannel(a, 5)
  br  = GetChannel(a, 6)
  sl  = MixAudio(bl, br, 0.2265, 0.2265) #把SL,SR都当作S处理了,用于SL,SR音源位置相同或相近
  sr  = MixAudio(bl, br, -0.2265, -0.2265)
  blr = MergeChannels(sl, sr)
  return MixAudio(lrc, blr, 1.0, 1.0)
}
左声道 =(L*0.3205+C*0.2265) + (SL*0.2265+SR*0.2265)
右声道 =(R*0.3205+C*0.2265) - (SL*0.2265+SR*0.2265)


function Dmix6Dpl2(clip a) { # 6 Channels L,R,C,LFE,SL,SR
  flr = GetChannel(a, 1, 2)
  fcc = GetChannel(a, 3, 3)
  lrc = MixAudio(flr, fcc, 0.3254, 0.2301) #忽略低音增强 模拟相位差
  bl  = GetChannel(a, 5)
  br  = GetChannel(a, 6)
  sl  = MixAudio(bl, br, 0.2818, 0.1627) #后向音源模拟相位差的混合幅度减小
  sr  = MixAudio(bl, br, -0.1627, -0.2818) #用于SL,SR音源位置相距有一定距离,但有并非正左正右
  blr = MergeChannels(sl, sr)
  return MixAudio(lrc, blr, 1.0, 1.0) #个人认为这样混合更合理
}
左声道 =(L*0.3254+C*0.2301) + (SL*0.2818+SR*0.1627)
右声道 =(R*0.3254+C*0.2301) + (SL*(-0.1627)+SR*(-0.2818))

这篇关于5.1声道转化为左右声道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147942

相关文章

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

关于字符串转化为数字的深度优化两种算法

最近在做项目,在实际操作中发现自己在VC环境下写的字符串转化为整型的函数还是太过理想化了,或者说只能在window平台下软件环境中运行,重新给大家发两种函数方法: 第一个,就是理想化的函数,在VC环境下充分利用指针的优越性,对字符串转化为整型(同时也回答了某位网友的答案吖),实验检验通过: #include <stdio.h> #include <string.h> int rayatoi(c

通过C语言将文法转化为语言

最近在学习编译原理,在做一道题时,突然产生想法,想通过C语言将文法产生的语言表现出来。   题目如下:   给定文法:S::=aB|bA                     A::=aS|bAA|a                     B::=bS|aBB|b   该文法所产生的语言是什么?   程序如下,可以注意相关的程序注解 #include<stdio.h> #in

Oracle之用TO_CHAR函数将日期格式转化为不带前导零的月份和日

要求: 1、日期格式转化成字符串格式,月和日前面的0需要去掉,如日期2024-09-06需要转化成2024-9-6; 2、如果用截取拼接函数写法就会复杂,最好用TO_CHAR函数格式化实现。 正确写法: SELECT TO_CHAR(SYSDATE,'YYYY-fmMM-dd') AS DATE1 , -- 执行结果为 2024-9-6TO_CHAR(SYSDATE,'fmYYYY-MM-d

Flutter-listview的item左右滑动,删除item

import 'package:flutter/material.dart';//列表左右滑动删除void main() =>runApp(MaterialApp(home: HomePage(),));class HomePage extends StatelessWidget {final List<String> items = List.generate(20, (index) =>

jks bks 等的定义 如何将jks转化为bks的

接着上一篇,文中提到的android不和java一样识别jks,所以我们要将其转化成bks这里面我们就系统的介绍下到底该如何去生成jks,bks等等 常用的证书密钥库格式: BKS来自BouncyCastleProvider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS能够跟JKS互操