技术篇《unity引擎声音格式的选择》--Channel游戏音乐

unity引擎声音格式的选择------转载请注明出处:Channel游戏音乐工作室

Gapless looping MP3 music in Unity 3D

关于unity下 播放无缝循环的音乐 我们会发现一个问题,就是音乐制作团队提供的文件,使用PC或是MAC的一些特殊的第三方播放器 可以听到 该文件是完美无缝循环的音乐,但是放到unity里时,却发现结尾处会卡停一下,或是播放不完整。下面的内容就是解释这是怎么回事,要如何解决呢?

一般游戏开发团队 最常用的格式MP3。他体积小 兼容IOS 或是 安卓又非常好,但是他有个致命的BUG,就是音乐不能完美循环或是完整播放。下面先说说为什么MP3有这样的BUG。

Gapless looping MP3 music in Unity 3D

Recently I have been struggling with my background music. As it appears MP3 music does not loop very well. Natively MP3 sounds have a little space at the start and end of the track.I thought that when you add a MP3 sound to your game, the new Unity setting called *Gapless looping* would solve that for you automatically.

The problem in my case was that the property was disabled.

After searching for answers on Unity questions and answers, Google etc I have found the solution myself!

The trick is to export your music as WAV. Meaning that it will be added to Unity as an uncompressed audio file. Next, select the audio file and watch the properties in the inspector. As you can see the drop down shows WAV and most of the other options are grayed out. Now, select MPEG from the drop down. By doing that we are telling Unity to compress the WAV file.

Watch what happens with the other properties: they become enabled!

Next, select Gapless looping and the other settings. If you are using the file as background music you might want to set priority to 0 for instance to prevent the sound from being swapped out. Also it probably doesn*t make sense to have 3D background music as the volume and panning does not apply to the position of your listener.

Finally click Apply and Unity will start creating the MP3 file for you. Add an empty game object to your game, add an Audio Source component to it and select the Audio clip. Make sure looping is enabled and start your game!

The music should loop perfectly. So to summarize: don*t import MP3 files into Unity but instead import WAV and let Unity create the MP3 for you. That way you can create nice looping background music.

The problem (I think) is, that mp3 has "header" data that it stores at the beginning and the end of the file because it is a compressed data format. This header data is represented as a silent gap in the audio file, usually at the beginning or end of the file.

(本文是跟Channel游戏音乐 美国总监 讨论的结果,所以该篇文章英文占了很大的内容)我用中文简短概述上面的问题。这个问题出在:mp3在开始和结束播放时都会储存一些标头数据("header" data),因为MP3格式是一个压缩数据格式。标头数据显示为一段无声的空隙,一般出现在文件起始或结尾处。所以再unity下 会出现循环时卡壳的情况。

Yi (奇异)should not be importing MP3 into Unity as the MP3 files already have this header data embedded into the file and it will not loop properly.

WAV audio, however, does not have this header data because it is uncompressed. According to the link above, the audio should be imported into Unity as WAV and then converted within Unity to MP3 upon import. There is also a "gapless looping" checkbox on this importer that will remove the header data from the MP3 file that Unity created. This way, when Unity imports uncompressed WAV audio, it will convert the audio to MP3 and also remove the header data from the file so that the file will then loop seamlessly.

所以不建议直接把MP3导入到Unity里,因为mp3文件已经产生了这些标头数据,无法正确循环播放,但是WAV文件就没有这种标头数据,因为WAV格式未经压缩。应使用WAV格式音频文件导入到Unity,再在Unity内部转换成MP3导入软件上有一个“无缝循环”的选项,可以去除Unity在MP3文件里产生的标头数据,这样就可以通过用Unity导入未压缩的WAV文件,并转为MP3、去除MP3里的标头数据,即可实现无缝循环。

If Yi is importing MP3 directly into Unity then it is importing an MP3 file that already has header data in it, and possibly redundantly converting it to MP3 again and adding additional header data. We should be importing uncompressed WAV files into Unity and letting Unity handle the MP3 conversion and the gapless looping feature, rather than importing MP3 directly to Unity.

如果直接把MP3导入Unity就无法避免产生标头数据,并且可能Unity还会再把它转成MP3,在此过程中又产生新的标头数据。所以应先把未压缩的WAV文件导入Unity,再让Unity将之转化为MP3,并实现无缝循环,而非直接导入MP3文件。当然音乐的部分,如果选择wav格式,最终untiy打包也会把wav的音乐一起打包,从而增大了容量。经过测试使用OGG作为源文件,导入untiy后,untiy自处理压缩后的得到的 无论是mpeg 还是 ogg ,完美无缝的循环表现都很不错,跟wav的表现几乎完全一样。音效部分, wav在untiy中是无解压过程的,所以音效的部分我们选择wav源文件没问题, 如果是音乐或是音效 要使用无缝LOOP的时候,建议使用OGG作为源文件 。并采用硬件播放方式从而减少内存的损耗。

最后补充:格式的选择 只是平台和引擎下的表现能力。但是要完美无缝循环 还是需要先得到完美无缝循环的音乐音效文件,Channel游戏音乐欢迎您 到我们的音频团队 来制作您最想要的声音体验。

游戏音乐制作,游戏配音,游戏音效制作,Channe游戏音乐工作室

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容