查看: 2538|回复: 20

[已经解决] 如何使音频在选择的某一点开始播放?

[复制链接]
梦石
0
星屑
3810
在线时间
744 小时
注册时间
2016-6-2
回帖
175

开拓者

发表于 2017-6-29 22:19:05 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 David_Exmachina 于 2017-6-29 22:21 编辑

如题,比方说有一个音频,内容如下:
刚开始播放后听到:“Let the bass kick”
播放1.4秒后听到:“O-oooooooooo AAAAE-A-A-I-A-U-”
播放4.2秒后听到:“JO-oooooooooooo AAE-O-A-A-U-U-A-”

如果我用普通的方法播放这个音频,
那么会从“Let the bass kick”开始播放。
我能不能通过一种手段,
而且不创建一个新的音频,
使这个音频从“O-oooooooooo AAAAE-A-A-I-A-U-”开始播放,
或者是“JO-oooooooooooo AAE-O-A-A-U-U-A-”开始播放呢?

脚本好像很难实现这个。
如果脚本不可能实现,有什么能够实现这个的插件吗?

注:例子中的音频其实是音乐“Brain Power”的一部分。
梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-6-30 15:01:13 | 显示全部楼层
本帖最后由 张咚咚 于 2017-6-30 15:06 编辑
David_Exmachina 发表于 2017-6-30 12:18
这个应该插入哪个脚本呢?
另外每次打开这个的时候怎么都报错,说:
找不到文件:Section000:51in'initiali ...


Project1.zip (1.86 MB, 下载次数: 72)

无论播放那个文件,最多只会创建两个临时文件,不必在意。
回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-6-29 23:10:44 | 显示全部楼层
本帖最后由 张咚咚 于 2017-6-30 00:01 编辑

不创建音频好像没办法
分割音频测试测试mp3格式是没问题的

[pre lang="ruby"]#使用方法:fg_bgm(BGM文件名需要后缀名, 开始播放的位置, 播放的长度)
def fg_bgm(filename, start, len)

f = open("Audio/BGM/#{filename}", 'rb')
data = f.read()

f = open("Audio/BGM/fg___.mp3", 'wb')
f.write(data[start, len])

f.close()

Audio.bgm_play("Audio/BGM/fg___.mp3", 100, 100)
end[/pre]

点评

好吧,当场眼瞎,上面原来有写。  发表于 2017-6-30 12:08
突然卡顿,不小心发了两次……orz  发表于 2017-6-30 10:58
这方法好像可以,只要及时删除产生的临时文件就可以了。不过“start”和“len”代表什么?  发表于 2017-6-30 10:57
这方法好像可以,只要及时删除产生的临时文件就可以了。不过“start”和“len”代表什么?  发表于 2017-6-30 10:57

评分

参与人数 1梦石 +1 收起 理由
hys111111 + 1 精品文章

查看全部评分

回复

使用道具 举报

梦石
0
星屑
3810
在线时间
744 小时
注册时间
2016-6-2
回帖
175

开拓者

 楼主| 发表于 2017-6-30 12:18:55 | 显示全部楼层
这个应该插入哪个脚本呢?
另外每次打开这个的时候怎么都报错,说:
找不到文件:Section000:51in'initialize'Audio/BGM/(文件名)
回复

使用道具 举报

梦石
0
星屑
3810
在线时间
744 小时
注册时间
2016-6-2
回帖
175

开拓者

 楼主| 发表于 2017-6-30 17:29:54 | 显示全部楼层
哇,这个很不错,基本符合我的要求。^▽^
不过如果点开画面,段落播放完了以后会停止循环,
点进画面后才会继续循环,这个怎么破?QWQ
还有start和len的单位是什么?是采样吗?@U@
回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-6-30 18:12:05 | 显示全部楼层
本帖最后由 张咚咚 于 2017-6-30 18:13 编辑
David_Exmachina 发表于 2017-6-30 17:29
哇,这个很不错,基本符合我的要求。^▽^
不过如果点开画面,段落播放完了以后会停止循环,
点进画面后才会 ...


什么意思,是循环播放音乐吗。
单位是读取的文件数组

点评

没错,是循环播放音乐。话说音频的读取文件数组是什么?-_-||  发表于 2017-6-30 19:54
回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-6-30 20:02:45 | 显示全部楼层
读取一个文件会保存在数组里,判断数组的长度,就是文件的长度。。。
Audio.bgm_play,Audio模块里的bgm_play方法是播放BGM的,会循环,换成me_play就是ME播放方法,只会播放一次。

点评

应该可以在文件名上加上秒数,或者在一个文本txt里面存入,然后根据秒数判断就可以知道长度到底代表多少  发表于 2017-6-30 21:14
这个好像是不确定的。。测试了一下和秒数是没关系的,应该和音质有关系  发表于 2017-6-30 21:12
换一种问法,单位是多少时间?(比如说,1毫秒,1微秒什么的)  发表于 2017-6-30 20:40
也就是说要看比特率吗?比如说随便输入一个单位,播放320kbps的音乐的时间是160kbps的音乐的一半?  发表于 2017-6-30 20:38
回复

使用道具 举报

梦石
0
星屑
3810
在线时间
744 小时
注册时间
2016-6-2
回帖
175

开拓者

 楼主| 发表于 2017-7-1 11:24:31 | 显示全部楼层
OK,我知道该如何得知一个单位的长度了。(ノ゚∀゚)ノ
那么点开画面后停止循环的问题该如何解决呢?
⊙ω⊙
回复

使用道具 举报

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-7-1 12:35:07 | 显示全部楼层
David_Exmachina 发表于 2017-7-1 11:24
OK,我知道该如何得知一个单位的长度了。(ノ゚∀゚)ノ
那么点开画面后停止循环的问题该如何解决呢?⊙ω⊙ ...

点开什么画面

点评

不会啊,就算窗口失去焦点还是会循环播放的  发表于 2017-7-1 15:15
点开游戏画面。点到游戏画面之外的区域,然后播放完剪切下来的那一段音乐后会停止循环,直到点进游戏画面。  发表于 2017-7-1 12:45
回复

使用道具 举报

梦石
0
星屑
3810
在线时间
744 小时
注册时间
2016-6-2
回帖
175

开拓者

 楼主| 发表于 2017-7-1 18:50:11 | 显示全部楼层
本帖最后由 David_Exmachina 于 2017-7-1 18:56 编辑

好的吧我知道原因了,这大概是音乐文件格式的问题。
我试了一下,不只是剪切下来的音乐,所有mp3格式的音乐都会发生这个问题。
总之,问题算是完全解决了,非常感谢你在这个难题上的帮助。O(∩_∩)O

还要感谢你能够连续帮助我那么长时间(我觉得2天已经算是很长了),
一般人要问的话,我觉得只要半天后问题就会解决了。
我还以为我问了太久就会遭到很恶劣的评论呢。

另外,我觉得拿这个脚本做真正的循环音乐会很好。
只是普通的循环就会出现音乐会停止一段时间,会产生很别扭的感觉。
尽管要统一所有音乐文件的码率,很麻烦,但至少这是可行的了。
虽然会产生临时文件,但是只要用脚本及时处理就好了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部