|
|
0 t2 G5 F4 B' q( F: Q% ]2 g
在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。& l1 Z, e& r1 o) V m* p d# U) K
' O% I. j- u F& `3 g# B: C& k
, W7 |: m: P0 S e& u; U$ U" i& f* }& p T! V1 b
首先了解一下音频的几种常见格式:
@' H% O4 X/ M' e$ M: U) z. `7 Y" L, n! }, g7 y
mp3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。
2 A* { Y4 Z4 }8 j* twma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。
5 g7 F" h) ~& Y9 l; Z+ Z0 fwav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。 ; E. Q+ N. A- W7 |. [
: z5 R( i" y6 Y/ F/ Z K
属性(采样频率):
; g# b: k! E2 V! b3 A
& a }" c8 q5 t/ s: p" b5KHZ:只适合于说话声音
, B( L6 M' U6 g: `* D11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质- z P! b' y% Q* C% O0 a, W
22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择
& [" _2 e$ o9 [1 [* {44khz:理论上的CD音质界限。标准CD采样率 9 u- E) @2 l/ e. a* ], ~
3 ^) u: Z H, T0 {, Z: N. [采样位数:
3 ~3 L. A' ]3 w0 x% p6 U) ]3 p
/ n3 f- i0 d3 L如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。 ( A* Y- a" C' [6 g. c( f
当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。
0 E U" f5 t: z2 H* @. A5 N N确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题: ' q4 p) U7 K" s
8 q) \$ c8 [% g# T4 X1 t再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质
9 ^) r+ N0 \$ ?* h$ J2 w1 `; A要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。 - k, ^1 T5 t: ?) Q' m6 B8 N* z' o( E
搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。
; k6 O- B7 t% J! z1 f% P$ T& v) A |( [5 g& D2 J0 H* @
6 h; p6 a( |" L) @) y z- p" b下面我们打开Goldwave软件~来看看如何操作 & P2 X& b0 `. f" h" b. E
- u& e, W0 }+ h: L& O- l2 d T: P/ K
音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。
% z1 c0 |" S2 X. g+ R5 J% j% j. m2 ]% h# y! ~9 p5 W9 u
打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲+ p N) V, {5 ~: H- W+ J
解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。 B8 G$ E2 Q. Z% H
在弹出菜单中,选择保存类型:MP3。6 M& Z6 i9 T b3 v7 _
打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。
2 [, E7 e& x! U检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。
1 y9 l2 l/ J8 o/ ?* O回到flash软件,导入mp3,正常导入并检查库中元件。
: o6 i1 |! i: [* ]注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。
9 k$ G3 w' j T7 Y4 }打开库面板,选中元件鼠标右键,选择“导出设置”。
1 ~9 k* b4 \$ h4 u选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。
9 r% Y2 I4 @. i) `5 Q4 z2 n再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。
+ E% n- L: M8 r1 m( i- `, W; k
, @. T. _6 N& T, f- h3 ~. H; D* d1 J( L, J$ f% U
歌词和音频的同步,用于swf中的字幕制作, s" `7 {9 D7 k% h* Q; S1 l" L
% U6 s# e: M' \4 H
打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。% ^* \1 _* v: M5 R T1 w2 y
在时间轴上新建一个图层命名为“文本”。
1 M( }& r6 y( T9 r" Y* ~使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。
7 F0 X/ B$ H% C) g5 \* G) w0 e在第1帧处插入如下代码,同时执行导入库中的音频文件:4 q [. h+ G& w
1 J6 D5 k9 m% Y) R
inc = 0;
+ D+ d! ?* [: A( X3 Fmusic = new Sound();
% m3 e, ~7 o; N: amusic.attachSound("music"); 8 ^( _# ~7 P) X1 j" x) Y* Q M
music.start(); 5 N2 K" i$ I2 c: R# a
" y8 f/ m, w& s4 b1 A新建图层2,命名“as”层,第一帧处插入以下代码:
( r8 B$ `" ~/ g d1 l9 Y, d+ a4 d3 e
stop(); ' m0 W0 R# \8 z
this.onEnterFrame = function() { ( V3 K9 M( `/ [ Y
if (inc>10) {
: v# e$ L1 L, ~. t gotoAndStop(1); 6 n! E+ h% F n# J& p8 w
}
4 o$ p3 ]% Z: C$ G: I. m labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5];
# y" [7 b, L/ h7 W musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"];
# r# P+ W; H* y2 U( W: C0 B) \ if (getTimer()>labelTimeList[inc]*1000) { , Q2 t) H( b% R! X4 X3 y' R
x = musictext[inc];
1 q. |/ }+ V7 A! L# i/ |+ h- ^/ ] inc == inc++;
, L8 V- d3 ~9 u4 O5 ` } 9 I y" g; s7 G# t( ~
}; ( ?2 M8 H, y6 |. V4 d J5 N
this.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数
5 _7 y, E5 e& z% L; ` if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc- |) n9 y4 }+ v: L) T8 D
x = musictext[inc];
o2 g- z6 Y; z; T9 v2 p8 y: m inc == inc++; , D1 Y& O. l, o) i
}
9 p* \3 d4 C, o1 R* p* m( G$ h};% D- j9 [ T1 f! ?6 E
labelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间
5 u4 }1 X# f& Q. a9 \
4 b7 N$ o( [# T. [8 ?, vCtrl+Enter回车测试效果。: O' B- C4 ^, K0 [8 U; Z
|
|