需要在Unity中循环使用的音频音效需要导出为wav或Ogg格式,MP3格式在Unity中起止部分会额外多出一点空白部分,导致循环时衔接处不连贯。
原因:
mp3在开始和结束播放时都会储存一些标头数据("header" data),因为MP3格式是一个压缩数据格式。标头数据显示为一段无声的空隙,一般出现在文件起始或结尾处。
所以不建议直接把MP3导入到Unity里,因为mp3文件已经产生了这些标头数据,无法正确循环播放。但是WAV文件就没有这种标头数据,因为WAV格式未经压缩。应使用WAV格式音频文件导入到Unity,再在Unity内部转换成MP3导入软件上有一个“无缝循环”的选项,可以去除Unity在MP3文件里产生的标头数据。这样就可以通过用Unity导入未压缩的WAV文件,并转为MP3、去除MP3里的标头数据,即可实现无缝循环。(然而并没有成功进行此操作,无法在unity中将WAV文件转换为MP3文件。使用的Au将m4a文件(手机录音音频是m4a格式)处理后直接导出wav文件。)( 使用格式工厂将MP3文件转换为WAV文件并不能实现无缝循环。)
如果直接把MP3导入Unity就无法避免产生标头数据,并且可能Unity还会再把它转成MP3,在此过程中又产生新的标头数据。
所以应先把未压缩的WAV文件导入Unity,再让Unity将之转化为MP3,并实现无缝循环,而非直接导入MP3文件作为音乐的部分,如果选择wav格式,最终untiy打包也会把wav的音乐一起打包,从而增大了容量。经过测试使用OGG作为源文件,导入untiy后,untiy自处理压缩 无论是mpeg 还是 ogg ,完美无缝的循环表现都很不错,跟wav的表现完全一样。 wav在untiy中是无解压过程的,所以音效的部分我们选择wav源文件.音乐使用OGG源文件。(同一音频导出MP3格式文件大小为107kb,导出为WAV格式文件大小为2162kb,导出为ogg格式文件大小为93kb。
以上内容来源于我之前第一次搞音效素材时候碰到这个问题时候搜到的答案,原文是个豆瓣的百度快照,现在已经没了(更新:在这里《unity 中音频无缝衔接不能用MP3格式》( )),蓝色部分我没搞明白, 直接用AU搞的WAV格式给到程序那边了。