TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

 找回密码
 新人加入
查看: 6129|回复: 7
打印 上一主题 下一主题

[其他代码] tcAudio模块特效示例 - ASS外挂音频柱状图(频谱分析) [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2011-12-5 13:41:54 |显示全部楼层 |倒序浏览
说明

需要先添加tcAudio模块, 下载地址 http://www.tcax.org/forum.php?mod=viewthread&tid=198
附件为完整工程, 其中test.mp3可以被替换, 推荐的音频格式为wav, mp3, ogg.
本例子仅作为一个展示用例.
  1. from tcaxPy import *
  2. from util.tcAudio import *

  3. SPECWIDTH = 368
  4. SPECHEIGHT = 127
  5. BANDS = 28

  6. def Spectrum(fft):      # convert fft data to graph
  7.     bars = []
  8.     b0 = 0
  9.     for x in range(BANDS):
  10.         peak = 0        # peak of a certain bar
  11.         b1 = pow(2, x * 10.0 / (BANDS - 1))
  12.         if b1 > 1023:
  13.             b1 = 1023
  14.         if b1 <= b0:
  15.             b1 = b0 + 1    # make sure it uses at least 1 FFT bin
  16.         while b0 < b1:
  17.             if peak < fft[1 + b0]:
  18.                 peak = fft[1 + b0]
  19.             b0 += 1
  20.         y = int(sqrt(peak) * 3 * SPECHEIGHT - 4)   # scale it (sqrt to make low values more visible)
  21.         if y > SPECHEIGHT:
  22.             y = SPECHEIGHT     # cap it
  23.         bars.append(y)
  24.     return bars

  25. def tcaxPy_User():
  26.     file_name = GetVal(val_OutFile) + '.ass'
  27.     ass_header = GetVal(val_AssHeader)
  28.     ASS_FILE = CreateAssFile(file_name, ass_header)
  29.     tcAudioInit()
  30.     channel = tcAudioOpen('test.mp3')
  31.     freq = tcAudioGetFreq(channel)      # usually 44100 Hz
  32.     duration = tcAudioGetDuration(channel)
  33.     num = int(duration * freq / 2048)
  34.     for i in range(num):
  35.         ASS_BUF = []
  36.         fft = tcAudioGetFFT(channel, 2048)
  37.         bars = Spectrum(fft)
  38.         bar_width = int(SPECWIDTH / BANDS)
  39.         count = len(bars)
  40.         for j in range(count):
  41.             start = i * 100 * 2048 / freq
  42.             end = (i + 1) * 100 * 2048 / freq
  43.             x = (1280 - SPECWIDTH) / 2 + bar_width * j
  44.             y = 700
  45.             FSC = fsc((bar_width - 2) * 100, bars[j] * 100)
  46.             CLR = color1(FmtRGB(j * 10 % 255, randint(0, 20), randint(20, 60))) + alpha1(50)    # a little change
  47.             ass_main(ASS_BUF, SubL(start, end, 0, Pix_Style), an(1) + pos(x, y) + FSC + CLR, PixPt())
  48.         WriteAssFile(ASS_FILE, ASS_BUF)     # write the buffer in memory to the file
  49.         progress(i + 1, num)
  50.     tcAudioFin()
  51.     FinAssFile(ASS_FILE)
复制代码

test_spectrum.rar

1.01 MB, 下载次数: 3376

完整工程

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

沙发
发表于 2011-12-5 13:49:54 |显示全部楼层
效果截图

spectrum.jpg

如果外挂预览比较卡, 可以试着只生成一部分 (提前关掉执行窗口, 已生成的部分ASS依然可以被使用), 或者直接压制后预览...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

板凳
发表于 2011-12-20 18:04:39 |显示全部楼层
5231251 发表于 2011-12-20 17:28
为什么不行啊

用千千静听转换成mp3, 或wav试试吧.... 测试版, 问题难免...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

地板
发表于 2011-12-21 15:14:57 |显示全部楼层
5231251 发表于 2011-12-21 01:37
都试过了啊 问题依旧!桑心……

QQ上把音频文件和脚本发我吧...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

5#
发表于 2011-12-22 16:20:13 |显示全部楼层
5231251 发表于 2011-12-22 01:01
发在你的邮箱了

用附件中这个dll替换掉TCAX\util中的那个同名bass.dll再试试吧.

bass.rar

100.29 KB, 下载次数: 3121

替换

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

6#
发表于 2011-12-27 22:41:53 |显示全部楼层
5231251 发表于 2011-12-27 18:33
好吧   还是不行   算了!

等以后出正式版吧... 这个版本只是提供个概念...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

7#
发表于 2012-1-15 19:17:33 |显示全部楼层
5231251 发表于 2012-1-15 18:43
现在这个可以用了  
问下那个音频柱大小可以修改吗  可以的话怎么修改


可以, 修改SPECWIDTH或bar_width的值吧...

p.s. 说实话, 没什么不能修改的...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

8#
发表于 2012-1-16 00:06:41 |显示全部楼层
5231251 发表于 2012-1-15 23:36
那怎么修改它的位置  在tcc中定义alignment好像不管用  想放在屏幕角落


TCC配置通常是针对内置特效的, 自己定制(编写)的脚本不一定会支持(要支持的话, 得编写不少额外代码, 增加复杂度), 所以最直接的办法是修改py脚本...

要先对python有个入门级的了解...

对于本例, 你只要修改pos中的数值就可以了 (如果不明白这句话的含义, 那我建议你先去学习一下py入门编程-->真的没有捷径)

相关链接: http://www.tcax.org/forum.php?mod=viewthread&tid=40

http://www.tcax.org/forum.php?mod=viewthread&tid=30



您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-5-6 03:31

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH