|
! g5 w+ v( I0 j$ Q% \% S在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。
; ~0 d2 q3 i, a# R! O* J# j
: ^2 U. \& G- y8 t6 W0 ` 3 I3 e4 V5 N& B
7 d' ]# z7 q, e/ J2 M8 @% j首先了解一下音频的几种常见格式:4 \* B* O1 h9 a1 V, ~# r4 g
* ^! `3 W6 d) T$ ~) _: @" ump3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。
- }6 X4 N0 l L$ R$ t; \wma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。 1 ~4 ]* a" m0 G1 L
wav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。
8 f* L8 T$ y( H, Q6 [% t1 w2 n' u1 x+ p8 |* X X, ~
属性(采样频率):
4 V" H4 _7 _3 L1 Z; ?" V
2 O. Y1 B- @# K$ ]; Z6 M3 r5KHZ:只适合于说话声音0 Y1 Q$ Y0 p1 b6 K: \/ y9 l
11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质
3 I2 k# h, p' K5 S: {22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择
' T) B# `1 L9 U' h+ q44khz:理论上的CD音质界限。标准CD采样率
' Q" [ |, @6 @/ r8 j! }& S( }" C( {* k
采样位数:
8 H$ ?+ I) W( s6 l# U+ Y8 C& D
4 q3 y/ S; @ x* ^ W& ^1 M, d如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。 K) Z6 r& Z8 d4 C8 ~* y9 a
当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。
Y9 A) C, u# n3 l: A! e( R" n确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题: ' [. f0 \) n/ O( I& ~$ y! v
' n. t' g' L/ L& ?再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质4 X: u" x' n1 m! w
要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。 ; C3 {) r- S9 R
搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。
/ \+ |9 t! R" H9 c. G8 q1 x
3 ~ c+ n/ g& B: {% t4 o4 j! L3 V) i/ }& R- ?" b' P
下面我们打开Goldwave软件~来看看如何操作
0 _, |* I$ D, y) P1 j5 e5 y3 b3 A, b6 s$ @9 v3 b
- X# i; W' j6 h6 J: A7 Q
音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。
% f0 ]2 @$ I: d" j5 s, h% K7 p+ Z2 o6 |5 l/ D$ m
打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲
0 G R0 t+ S) k7 I$ u) O解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。/ Q8 o6 C# ^( G' p3 T
在弹出菜单中,选择保存类型:MP3。
# \4 Z/ F& D8 J j) _& T m打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。- J, T' e7 c+ s; @: y+ E# L
检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。' B; {8 T! W* i, R# b
回到flash软件,导入mp3,正常导入并检查库中元件。
2 V7 ~3 K2 ]7 e" b注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。# B0 F: h( s5 s. c' k
打开库面板,选中元件鼠标右键,选择“导出设置”。
/ S4 E0 l; z! P/ F选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。
; a T7 M/ D8 H再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。3 N: k$ \: z1 l$ d* W. G9 _9 k
6 m% ~' m, J8 [8 Y
* W1 m% E1 ~4 T2 `# w# E, s
歌词和音频的同步,用于swf中的字幕制作
' U4 R: n- V+ O4 Q# C1 `4 N8 N* d- \# c6 p
打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。, \) _! `1 [! r* x
在时间轴上新建一个图层命名为“文本”。
, _) V$ E1 o) G$ Y. k使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。
2 r, |: `6 ~' } K5 S在第1帧处插入如下代码,同时执行导入库中的音频文件:
9 ^% p! [/ V# X5 ]$ h0 H6 [
% l- S8 M- z# k7 r4 @! Q1 A" C( Z; pinc = 0;
7 {* S; Z; U5 d! ~5 amusic = new Sound();
% K1 v; q+ M* v$ v5 Kmusic.attachSound("music");
/ e/ x' W# _) pmusic.start();
# O6 d l" |; i) U0 [+ m8 n+ Y4 l- \. U; z
新建图层2,命名“as”层,第一帧处插入以下代码:
' A" o+ J+ {) y2 s
! }' ~, C& y$ {5 a: istop(); * }) p2 ~7 i3 a/ r9 ^9 F4 F9 P
this.onEnterFrame = function() {
: `" U. j$ p* Y Q @0 C# w' d. w6 K if (inc>10) {
7 j$ j( Z2 X7 D7 | gotoAndStop(1);
7 Y! I" e% L Y' r/ t } 9 E4 Q8 f$ J( F! j1 ? S" a# Y
labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5]; 2 O( X& V' G' u
musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"];
2 Y" F G. [0 B; a K( E if (getTimer()>labelTimeList[inc]*1000) { 0 i- I e: l# k% B+ v2 u! I f9 b
x = musictext[inc]; 9 L7 j! V z, C4 k! y
inc == inc++; ! N0 z0 O9 x7 J: W9 ?( R
} ?! F7 c5 j% _) C/ r4 R
};
9 q1 P* _3 v3 w1 {& Lthis.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数
4 O1 z. l+ u9 }: u if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc
1 D$ y- E1 _: P# }$ `- p8 q I x = musictext[inc]; " Q9 D4 g8 ] X# v( Q
inc == inc++; $ v- Q6 T" B; I) w
}
8 Z6 u# ~9 z6 T' f5 H};- \, v/ m) W6 g/ `: l& w
labelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间# t4 Y: t* }( q0 e) l
9 E: t; [/ V" @$ [5 C# R* T- L
Ctrl+Enter回车测试效果。' u' k( ?9 m8 o! @# z* |8 T' C1 S
|
|