|
|
2 Q. n7 x4 u* F2 ~4 j
在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。6 C% n! v7 T+ t: a7 j
& f6 |3 ]+ Q5 p7 R4 K" V8 w, M3 U
" a& G: u+ j- b' k/ ]. t3 F
* }- J/ h' T; D首先了解一下音频的几种常见格式:
/ F% O e5 W8 S0 ^% O( @3 U% [; i4 \' A( @3 |/ ~: x, _
mp3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。
( _6 V6 A0 q, b& p }wma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。
; ]% f! S" h2 }8 s) O# R% fwav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。
' f( Z7 l8 B+ S( {, t8 B0 d; C2 \$ S: f# K
属性(采样频率):
- v# ]3 g- \* O" z2 E6 W
/ }. C1 G8 C6 H5KHZ:只适合于说话声音! m2 e* x! M- |, ]1 L
11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质
1 m' V0 h+ L. p' g6 W% ~22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择( m( t6 ~! y! M7 I" M& p
44khz:理论上的CD音质界限。标准CD采样率
; N: h- ~! W6 {- C2 {3 L. |5 J- X" n+ f5 Y2 S2 N% s, n4 u' y
采样位数:. O% i7 ]5 ~, ^4 C( g' u# Q
* a: g4 [, [: a/ }6 V如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。
1 P0 n4 b, c# m% C* F当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。
1 p$ M x1 _8 d: `9 C( ?: Y确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题: & M# h( l! s( y$ G
0 [1 L; V2 s: {- q! }
再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质4 H, R. Y% k# l8 |' ^9 j* m
要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。 7 f( r. S" S) x- W2 }! ^+ {
搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。
# e: b6 v+ W9 ?5 m2 T5 @! i6 ~% k I' |
4 K% B! Q, o6 `1 _3 f下面我们打开Goldwave软件~来看看如何操作
- A/ b) z, {! u h: }( Z9 P
" P r6 x6 P9 {( l s( s
; \+ c+ G; ?2 }. X音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。
' [8 c4 g. C6 m2 h% x
/ m: p, k4 U' J4 g打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲* q2 C( V7 ]" `
解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。
$ i9 j5 |& M% d$ S在弹出菜单中,选择保存类型:MP3。5 f& Y; P2 i, O) c2 G
打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。
. l& d \' V( C检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。
2 b! \8 s8 I% _+ r r" c回到flash软件,导入mp3,正常导入并检查库中元件。
7 s& o# y. P" x- ~! {) P注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。
3 }% b- w6 h* n U( j" d- l3 }- V, P打开库面板,选中元件鼠标右键,选择“导出设置”。
, E' ~$ A4 q6 Q5 S选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。
7 v+ n; p, h/ M& C) p r再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。
7 y* o P* s9 X$ R: [* r7 S2 i, g8 e$ j' b9 n8 {3 U+ m
+ l. n9 Q) d- P. U/ m+ `歌词和音频的同步,用于swf中的字幕制作0 r" n) x; _2 \" ]7 `5 F) k w
8 c" A( d0 V \& ?5 ?3 l9 [- C! V0 q' W
打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。# g) `# ?6 r2 A- N6 v
在时间轴上新建一个图层命名为“文本”。
* M+ z- g3 C% T4 w9 Z使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。# v4 {- u3 E: l, z, Y
在第1帧处插入如下代码,同时执行导入库中的音频文件:
7 X# D) @+ D: P9 Q7 g' {
& o, \$ S5 O# r, [6 t" dinc = 0; , X! k$ L: O1 @' h8 A( u
music = new Sound();
* j2 {, [; @: {* {1 X- P5 Qmusic.attachSound("music");
. Y6 H" g$ j( y2 ~# m4 \& ^" K' Emusic.start();
0 k) p+ y% K, |, q( s+ S* s
8 N2 [9 U" @( A5 i2 O* G" F% B新建图层2,命名“as”层,第一帧处插入以下代码:3 a2 k/ @ n _9 q( {
. x' p5 p' |- ?& D; ?. w# l7 t
stop(); : \# ~. ^+ K- j4 k% V& K; ^2 l
this.onEnterFrame = function() {
- [. l8 g+ ?$ Q6 G$ S if (inc>10) { 2 D1 d+ ?$ D# D ~! b
gotoAndStop(1); * p! |: E- K1 }! w: J
} + d2 [/ d& U6 | O4 p, H3 A1 o
labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5]; ) k5 v8 K; _ |0 s4 q& }; L' k
musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"]; . w( D" |0 J& K+ K: G4 Q9 u
if (getTimer()>labelTimeList[inc]*1000) {
3 s5 v! G ?/ ?+ _" N7 j x = musictext[inc]; 7 ?2 Z* f) b5 B' h# `
inc == inc++; ; y' k- ]2 f" L2 @3 D* l* O& Z! r
}
3 K& R+ B; l0 j0 p, S}; 6 J1 v) d/ a! |9 f8 E
this.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数5 p9 G; v# P( l+ P6 |
if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc
1 M0 n% V% ]1 j x = musictext[inc];
! R% R1 f7 |& l' G. v* b' @6 b inc == inc++;
3 F4 r! ]3 W9 @" ` X } 3 ]! U3 v4 k4 a+ m
};
9 W. q( v' B) H" `/ q& t* _8 clabelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间
# k! E" f! s5 {
6 y" U: E# t# H9 X9 X& oCtrl+Enter回车测试效果。
0 k2 \0 G2 W& @1 f- e |
|