|
发表于 2025-1-16 20:45:21
|
显示全部楼层
山东省德州市
大佬麻烦帮忙看下,用bass变速别失真变调,实现方式是用fx效果器导入解码流在转成音频流,有C#的势力,小白搞不懂,在bass帮助手册也没看到freesource常量。
C#:
而要想实现倍速播放,我们需要先创建出解码流。
只要将之前创建方法的bassflag枚举参数改成:
bassflag.bass_stream_decode
那返回出来的就是解码流了。
然后我们就可以将获取出来的解码流传给fx效果器了。
fx效果器都在一个命名空间下,因此可以先添加一个using引用:
using un4seen.bass.addon.fx;
然后调用倍速播放的效果器:
BassFx.BASS_FX_TempoCreate(解码流, BASSFlag.BASS_FX_FREESOURCE);
注意,这边最后一个参数是传入了BASSFlag.BASS_FX_FREESOURCE,这样会自动释放解码流。
方法的返回值就是音频流了,我们可以正常用它来播放暂停等操作。
要获取音频流的当前播放倍速,要使用如下代码:
float f = 0L;
Bass.BASS_ChannelGetAttribute(音频流, BASSAttribute.BASS_ATTRIB_TEMPO, ref f);
最后f里就保存着现在的倍速信息了。
这获取步骤其实跟获取音量是差不多的。
那要设置倍速,就是调用
Bass.BASS_ChannelSetAttribute(音频流, BASSAttribute.BASS_ATTRIB_TEMPO, 倍速值);
注意,倍速的值范围是 -50 到 5000,之间,例如:
0表示正常速度。
10,加快一些。
-10,减慢一些。
我的悬赏:
https://bbs.125.la/forum.php?mod ... 8027&highlight= |
|