|
|
w" i# X" t* y' U
在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。
2 g4 o/ s# `- B. i: q
% o/ A8 E5 O& h+ r $ `! d; `" z' [9 H f% z
, Q0 q" U/ t. L首先了解一下音频的几种常见格式:$ j! O0 o1 i4 f4 r1 F& L @
; R1 f q& x. S/ n1 T/ O
mp3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。
2 l4 |+ I& A% O) j4 w% I! z k) Swma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。
) S% \. S R1 [% v, b9 V) Z+ rwav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。 . J" o) E. ]) \7 P* i
8 y; ]2 ~. v. n, B- C属性(采样频率): 5 L, f( J: Q) N" p9 ?
' \1 O+ t9 s1 w5KHZ:只适合于说话声音
9 U$ z& k: w. d' f3 D, L% @1 a: x11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质
( X' P" d6 V8 u7 @' \2 O. U, V S$ j22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择
0 h8 X: x# G" E# g3 }# y1 o44khz:理论上的CD音质界限。标准CD采样率 6 {6 f# { ~; u: A
) e y: q8 L& |0 h) ?
采样位数:
1 q \* C6 G0 M5 n8 w! z) v
3 H, p0 }. p% [) Q/ u如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。 # ~0 g6 C# F5 y) b# E
当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。
3 {" J0 V( p8 ?& r确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题: ( f$ \1 @3 p1 d4 N& a" r! |1 y9 Y
5 B/ t( S+ [4 h: Z6 T0 O5 |; B3 H
再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质
% G8 ~1 b3 c$ Y) d& \# x9 ^3 F要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。
8 ~- d8 @3 E& L' {( c8 l7 w搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。: I0 Q3 |3 D e }% R- u+ a
7 \1 ?2 W1 L$ L5 @3 g' M0 l, A
# S) r$ Z3 k6 v. @下面我们打开Goldwave软件~来看看如何操作
8 R8 W. \ f3 X2 v; m* S5 h/ q0 O9 t) Q; n/ R$ z! b
' B0 ~/ b3 W* ~( k6 I
音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。
0 k9 B! l$ F1 ?
( R/ \7 r/ d6 j' c! B" f1 ^! [打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲2 r3 [1 t/ c4 L5 I" w3 I
解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。
) _5 z, @7 p3 ?在弹出菜单中,选择保存类型:MP3。% V3 P5 \/ m8 r, o4 f
打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。
1 j# n2 z$ s8 c( w! k4 c `- C0 M检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。( l/ ?1 T* n7 u; H6 t# |" Q
回到flash软件,导入mp3,正常导入并检查库中元件。- T0 e v4 @5 ?& d9 U2 Q$ n
注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。
* L6 O" A. W! S6 U. e0 F打开库面板,选中元件鼠标右键,选择“导出设置”。
, @2 f6 ]2 k; L选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。7 d. m% [( I. w+ ? `" N
再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。8 p" W3 V* Y! N+ d" n
, t7 N5 \9 } d2 O
! O$ m* ?7 K$ u歌词和音频的同步,用于swf中的字幕制作
/ d0 _0 r! ?9 \2 h; {" y& e" a% u1 {+ d" v3 w" F0 e
打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。
8 L+ K# X# w+ ]+ J6 s% |4 C; q) J在时间轴上新建一个图层命名为“文本”。
3 A( i% z7 i# g" J* y使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。, @+ `% ?; K& |6 I
在第1帧处插入如下代码,同时执行导入库中的音频文件:
+ _9 M. ]$ ~0 \# _# P& [
7 Z6 @0 @8 Q3 E: Uinc = 0; S- s- g: M$ W# \. S5 I: B% p
music = new Sound(); - D/ f/ e8 O- n/ d( t2 M
music.attachSound("music");
, M6 \. c9 z2 lmusic.start();
3 \) ~4 X0 g! m$ }9 ^/ a& L4 ]$ }6 S* y- W
新建图层2,命名“as”层,第一帧处插入以下代码:4 g( K% b2 R/ s5 U
8 h( D/ ^: _0 \) ~
stop(); ( j9 v0 R8 b. ?+ V- ^, A
this.onEnterFrame = function() {
1 E8 D/ o! q1 Q6 g. Y if (inc>10) {
% _, N% a, k- g6 D7 C0 b/ j- Q gotoAndStop(1); $ W5 C. b4 ] j) T3 y
}
, u7 o& {5 C8 ?& I labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5]; 5 A. j) P& a( Z8 O, ^ r+ b# v8 H- y5 q% h
musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"]; 6 f% t: I H ?0 `2 k. M2 T: b' X& [; }
if (getTimer()>labelTimeList[inc]*1000) {
( {* L- E% ~" m6 L/ ?0 A x = musictext[inc];
/ }) X$ v3 b. e9 J7 V/ U; X1 M$ Z inc == inc++; ; s% s0 ]; H1 S. R4 \ `# X, C1 N
}
) P: ?1 D' A* A g- \};
( C3 m; V6 g9 M% ?) M# x3 i3 tthis.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数/ r0 J% b7 |5 E: |6 Y' V
if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc( Y H% L. {; j U! H# X, w1 y4 E
x = musictext[inc]; # j7 q" O+ m' z
inc == inc++;
& o" S4 V- W" y5 c2 R0 b2 B- i }
; G0 e% \7 N5 G9 B3 Q3 N! P }};
9 b/ {+ q+ i* ?) ^ r* }, clabelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间2 v+ f& q8 C8 ~8 t8 B" m. [
- r5 |5 I; B. J9 \Ctrl+Enter回车测试效果。2 i5 S! T2 r! j, ^% a5 d
|
|