|
|
2 }, Y# a( |4 e2 A4 v% D在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。
' R& ~1 T2 z k1 {, P" L: u6 ^1 p3 O" z) B# m1 n* b" m
2 [) ?2 b: U T9 p" v
U J$ |# X( P. B
首先了解一下音频的几种常见格式:
( d# B7 ], K8 p# U' U/ x/ |- H) e" s1 z1 E& v$ k
mp3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。
% I+ G/ w- S+ I8 L) D* W8 L/ K* Bwma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。
: j9 a8 m$ t/ X4 c' hwav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。 / r2 Y9 y4 }: \* s p
/ [: Q% v# E. s+ ]
属性(采样频率): * f6 U2 C' V2 E) [, x$ I! U* i
5 g* s( a o5 o2 a7 U# Q
5KHZ:只适合于说话声音1 @' m( G# X0 A$ h" i0 R6 I
11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质: ]9 h! Q. N2 Z; x B* F O
22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择8 ^; t' J: B; z2 O3 u+ T# n
44khz:理论上的CD音质界限。标准CD采样率 ( u1 B( Z& y( }$ s9 Z
9 a6 N. O* ]& E9 k采样位数:/ p, U. C+ Z8 f
/ y2 @+ a9 u/ F, ^/ S5 R& l: F如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。 0 v# a" a' ?( [/ }
当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。
. O' b) h: F2 d$ [8 w1 b/ `" G确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题:
4 J4 c. b$ a/ i& L% N- [1 _9 g% m c- F2 D+ d
再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质. X5 P; K4 p. d% y: B2 M! X; U
要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。
3 Z' f$ }/ z- u6 }" y搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。" ]: w/ Z8 [4 @2 l+ H
! k. ]8 N4 |2 O, `- I( `$ t& G
( i. v4 Q1 \! M5 \0 V0 _9 u( @下面我们打开Goldwave软件~来看看如何操作 ) j1 E& G6 q* B
% P5 c, o8 H3 L1 M7 Y j6 r5 O" M) b4 Y7 X2 `1 M1 E
音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。
8 M. c7 [# q) M4 c
7 M" ]1 P2 }0 W打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲
+ y6 A9 `. L. i7 e: q解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。
$ `1 n" I+ M9 C, {6 V9 X( D1 N6 o1 g在弹出菜单中,选择保存类型:MP3。
( q! F2 c4 l9 ^% m0 x打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。
- @' ]+ o3 h2 Y* j0 }检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。
( C1 I% c- J& l. _2 I/ N: R回到flash软件,导入mp3,正常导入并检查库中元件。2 |" ~/ b; g2 {9 _9 k* ?
注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。
* Y1 z& e" K9 X/ l, e打开库面板,选中元件鼠标右键,选择“导出设置”。7 F4 }; ]4 J& y; R8 c$ q
选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。4 }, q5 w. ?! L: W) p) J' ?
再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。) }( b+ ^# @5 E
. }+ z# c% j5 [4 p6 C7 V& v
' k* D) y& b2 |0 c+ F5 k" o歌词和音频的同步,用于swf中的字幕制作
J+ p! c9 _/ ]) ~! {# ]
5 _! ]% ^' z1 e+ j! [3 `* A2 a打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。
I) i. r, B1 p! I, _在时间轴上新建一个图层命名为“文本”。
, V* O% @: H* g: E1 J4 k使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。/ Q" o" A. X7 P8 X3 t5 s8 \/ I- O
在第1帧处插入如下代码,同时执行导入库中的音频文件:
( F6 H, b# ^, Y. N0 G) U+ m3 ~
% a0 S/ A! @+ k/ E9 l) X+ einc = 0; : z0 i' q2 ?; y$ A
music = new Sound(); 0 Z- {: U. Z0 ]- p( t: g" R3 o
music.attachSound("music");
4 K) |- a7 V+ i0 q+ C- t: L$ h! wmusic.start(); 8 F' W2 V. |2 d; W) H6 p; F
0 Y" k4 Y' h: a9 a* B% _新建图层2,命名“as”层,第一帧处插入以下代码:9 y) N5 K: O( K) P$ {
4 \/ B e( _* |
stop(); ( h5 D, n1 {) E0 V6 B/ X
this.onEnterFrame = function() {
5 h" u2 b' q/ g% X# L" I& o if (inc>10) {
7 q8 ?/ t$ l! F3 y gotoAndStop(1); ; r, v4 X! ` X f
}
9 r' y/ F9 D4 x. e labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5];
- c1 }$ p* H2 i; a musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"]; % a- _3 _2 D8 G, B
if (getTimer()>labelTimeList[inc]*1000) { 3 }. h* q/ M* F! e6 x! s$ |" _
x = musictext[inc];
8 l! ?. R$ m* v7 {2 Y$ z% L/ }: f& y inc == inc++; ! Q$ ^+ Z0 U% D7 r7 C2 @
}
- Z/ Y5 M4 X4 V- V: _3 y! K# t$ \: V. I};
; f5 P% A% ^* N( d0 g7 Athis.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数) p; V- r- I! A( p& f$ A* x# K
if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc+ |$ d0 N: m5 c7 ?" b
x = musictext[inc];
7 C2 J1 e9 P1 ~2 h5 m inc == inc++;
) ~: H, A3 Y5 k6 f. I' } } p( ^/ w- F$ k( u. |/ O- t
};3 U' R# H- L" b% |7 i
labelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间
+ W! ^8 g7 M/ U
) l, k0 Y" I% S b3 g1 A8 {Ctrl+Enter回车测试效果。
" C1 S; c6 q( f( O- ^% Y; @7 d |
|