|
|
K- {9 X5 D8 i! s9 a3 N在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。 j! k2 u5 W2 ?1 D
' V0 W7 J* y/ d! ` + `* m- F2 T" }% h1 ~
. b1 G" ]( } r1 c _" J/ m3 V* e. N首先了解一下音频的几种常见格式:
, K$ U, J* t# W" ^ ]
O4 O1 B4 Z: S- Y1 g, omp3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。 - u) C! B( f" }5 P8 i' M$ o7 l* }
wma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。
. v% I3 v* H5 M0 fwav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。
; M2 f" [8 q) Q# I# p# U. M
! g8 l' ]6 x$ b( c0 |属性(采样频率): : X" p; B* H' G+ l0 J
: s6 ?! z' `0 L1 X3 i' X" u( s# [
5KHZ:只适合于说话声音- ] h- B. Y8 q- U# y; ]
11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质
& X+ [7 f4 i# x4 N22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择
& @' x# [7 S- E44khz:理论上的CD音质界限。标准CD采样率
) R& b* J# d! X. {* H7 h
3 b v( Z- Q# d, X I# M! _采样位数:
( @7 e, P% z) u; y5 o* N' P
' v# |3 d! H; i0 g5 z- E如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。
/ o! i. i( H/ B5 @5 J3 h当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。
8 f0 I- ~2 K& c5 G4 I确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题: # v Q; n H% x2 ^; y8 g- K# F
0 Y: ?& E. X9 g2 H0 p再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质0 q1 T9 l3 l8 k1 D5 w; h
要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。
) m+ B9 m" Z+ j2 N( d搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。; C" I: X9 _. }4 |+ A) N1 H
$ C# B; y! j1 R& T+ X3 C$ W3 m
: V% b- ?; m2 L# A/ S0 E下面我们打开Goldwave软件~来看看如何操作 " E4 x \: P& z8 O- |9 ~
" R1 a: S+ a! [- D3 t- V1 p }8 Q" O- T2 ^. \
音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。 6 ~8 ~, B. [, f$ _/ H/ G5 o
% Q, T( J5 @" v* J' \6 ?0 q打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲8 Q" g# I# Z& L% ]5 Y* q& t
解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。# z/ o$ ^8 t! s) D) v
在弹出菜单中,选择保存类型:MP3。6 o: z- |) @9 G8 i: i
打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。
, _% }0 J8 f' F) ]4 M" v检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。
1 E7 I0 N9 f" N* n9 M3 X& w* `回到flash软件,导入mp3,正常导入并检查库中元件。1 S ^ {. r! i- Z
注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。" p+ x& w7 l6 b. ?( l
打开库面板,选中元件鼠标右键,选择“导出设置”。( f4 @3 I) M2 e$ ?
选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。2 P# a2 w) ~6 R5 g% i
再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。
/ Y5 v8 F$ c6 U( X, b& O% U. u& n0 Z i* ~. k! N. T6 O# I
/ T) @: f6 `! H+ K. D7 \! c& p! T: m
歌词和音频的同步,用于swf中的字幕制作
7 ~2 ~ {( [' u# C6 i. K# d. v- l( w5 y# s ]+ J
打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。5 p5 L8 u* N# R1 Y
在时间轴上新建一个图层命名为“文本”。1 ?$ F# l$ {% A3 B, J" H1 E9 h
使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。
1 `4 U" n4 Q' @/ X" }9 o" g在第1帧处插入如下代码,同时执行导入库中的音频文件:! ^- _ P0 P3 Z3 X
0 q' g d. V2 t: A
inc = 0;
4 ]8 j4 Z5 n* \ g+ Q8 }& Y# r1 [" O! mmusic = new Sound(); 2 u( i& x8 f/ ]- O y3 e& v2 N8 g+ y
music.attachSound("music"); 8 N) I# D3 K7 l6 g# M( c, d9 }
music.start(); ; c6 e5 a; D5 s3 {
/ S; ~% E* [* d- J# T* X! j$ p
新建图层2,命名“as”层,第一帧处插入以下代码:
" y2 p) ?! I" ^: ~4 d% c9 }$ i
1 y( Z9 P2 ?. q1 m7 D& zstop(); / o- ^# O- H. v# j& l1 `% |9 S8 _
this.onEnterFrame = function() { , i' |! f+ F; Y; B, A) K
if (inc>10) { / G& c- q0 G, _+ Y5 k; W$ O
gotoAndStop(1);
% D9 ?& I$ p* i6 k* k& o } $ {1 T$ F4 j2 U
labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5];
' G8 B( R6 ~: W6 i' j2 } musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"]; ) R7 ^7 x* ]1 y
if (getTimer()>labelTimeList[inc]*1000) {
2 @9 Y, G- x4 \; ] x = musictext[inc]; ! [6 v2 m8 n* W9 j5 ?6 Y: ]& z
inc == inc++; ; o4 J H* T2 u! S1 _& Z
}
# i* p- F; R- ]( X% [}; ]/ Q1 b/ R$ ?; [/ c- A( F
this.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数$ `& x; U. O3 ^
if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc5 w7 \- L# w8 S7 U% [3 p
x = musictext[inc];
1 L1 `4 [! Q9 k0 l# ~+ C; P inc == inc++; & U |0 `0 G& X# p3 w* v
} / l% m' t$ w" s" I, x# i- w: L
};
7 n c- B9 D8 ?. M2 ^3 {labelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间
( B4 j% H+ o9 R1 d: ]6 x+ H' x o* G
Ctrl+Enter回车测试效果。1 L2 S# H+ o8 F$ w
|
|