|
7 T' q' F7 \8 P/ v4 ^- M: I
在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。
9 w; q7 z/ W2 F
( `% {1 k* S+ r : ]8 P6 U2 } I" p) y8 t
( f1 m' J7 w$ D/ c4 F0 V首先了解一下音频的几种常见格式:
$ p% u# P1 k _, ?" X& H+ G) w
mp3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。 - z" {! t# S/ ?5 q6 Z
wma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。 S" ~3 _/ I/ ~9 |7 g
wav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。
f( ]( X( e9 k: V& l S: K+ l G7 z8 e5 G% W; u3 Q
属性(采样频率): % L/ X- o% e% b! l! x! ~
w6 ~: a8 ?% @4 c" x, U3 G0 a& a5KHZ:只适合于说话声音
4 g+ V. i! w5 Z1 f) Z4 l( H! }$ k6 `11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质/ i% ^+ _ E* m4 ]9 r, y! f2 w
22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择! f+ J. J% b1 l5 D0 r1 D
44khz:理论上的CD音质界限。标准CD采样率 # Q( q# D1 S- P) v+ A H6 F2 @
* o ~5 ~8 s" I' ?1 w$ i) n$ Y采样位数:$ l& S7 u5 I: }6 i) H7 a( P
6 L% ^0 `. V1 Z& {% W
如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。 8 w. S) F9 [ T' R# \& o" g9 d
当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。3 W: x Y) u4 j I# t% U4 y* j; D4 J
确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题: $ M2 q- O. c" G* r6 i6 U. a
2 q- h- z& z1 i6 V5 S& v6 }9 s再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质
6 n2 U! l7 o/ y" c d要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。 ( m7 m% b2 a6 s
搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。- z2 r7 ^: w0 K, C4 \2 a* p
# z0 S4 `2 A, B+ u; }
, m8 R7 c& j% D4 h% m
下面我们打开Goldwave软件~来看看如何操作
, _3 S4 a( q9 q! |- d/ C8 C2 t3 F- k1 q" S' w/ ?- Y9 J
F# R* y5 K& o, f& {7 N! z音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。 # p+ n$ J1 ^. [8 M( {+ _( x
# V, e T7 k7 ~: ?1 s' |5 R% }
打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲3 o5 c! E4 l1 m9 b$ A# m
解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。2 s" D. \' a2 e9 f$ r( e' k
在弹出菜单中,选择保存类型:MP3。
; ]0 P% e+ G7 H# J) I打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。
8 W% S1 H, j, b4 W/ p* B检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。
6 F( Z4 [2 ^! C. T& N% n+ p$ _回到flash软件,导入mp3,正常导入并检查库中元件。
% ~7 E) h8 B( y0 m注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。; d* {0 S' _6 h5 R3 s! B
打开库面板,选中元件鼠标右键,选择“导出设置”。
& x r6 Q$ H; L1 s D选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。
% [, b& c5 Q3 R: W5 A9 v* O再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。4 ]- W% Z3 J# I! D9 c- ^) {" Y
( \- |& K! l H6 o( K9 Z( ]/ C4 c/ Q- s0 c8 F; g; ~, _# a
歌词和音频的同步,用于swf中的字幕制作
; q1 K! D; Y! d1 O9 r9 m+ T' b2 z/ P* ^& H3 Q
打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。
) z2 U( |, v) y. P, k8 Z& _% H在时间轴上新建一个图层命名为“文本”。
( b4 C7 v6 ?* [0 U6 ?. d- I使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。" R m$ \& m7 n' b0 _
在第1帧处插入如下代码,同时执行导入库中的音频文件:
7 @, u' f1 U$ Z$ U2 G: ?( h w& y C: {. p/ A# N' D5 O; W
inc = 0; 9 u: i, i+ g# \5 R1 ~5 K. D
music = new Sound();
) u: }. {6 k& s; k: {' J% W. pmusic.attachSound("music"); ! Z2 E" v/ S- K
music.start();
4 J W0 C- L X& `3 s* A
& K2 j7 \" O# B% u新建图层2,命名“as”层,第一帧处插入以下代码:
% f. f. U3 G5 J; f' T
% Q0 \/ S" M# {) Lstop();
( s. `% W s. \9 m1 N6 n! u; gthis.onEnterFrame = function() {
# ]8 \( [: P) x! P+ W, |$ v if (inc>10) {
o: o5 Z4 y( ?" Y2 p gotoAndStop(1);
. _- ]% Q4 j( a: L } % \0 g( f1 I8 o: V
labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5]; ( ]* d" u) X9 K& Y+ }% W- }
musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"];
5 E7 F: N. m" V if (getTimer()>labelTimeList[inc]*1000) {
4 J3 l" f! T; r x = musictext[inc];
5 a3 C: V$ p2 c7 _7 S9 B! K% p& L3 N inc == inc++;
9 E! N9 o, ^+ h+ v f5 j8 t } 9 [1 ]5 U: }! g7 @) ~9 O! J9 z
};
# L) y- K2 i: r% X6 Zthis.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数
" B# K3 g, s0 P8 K* ?8 P if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc
& D2 K2 y/ H! Q5 } x = musictext[inc];
, u7 h1 i5 }7 g; C inc == inc++;
/ C ^: U. y4 Z4 o) w o } - y! H$ o( B% s' u
};
6 b6 o8 z) Z4 _' B h) Y: llabelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间; Y/ T2 b, L2 ?' h! u
. @6 Y4 _" n4 \: g( X( H3 \Ctrl+Enter回车测试效果。; ~9 I* i t9 F
|
|