|
: \0 F% d6 O& X+ F' G3 G( |
在Flash制作过程中,导入Mp3音频经常会遇到"读文件时出现问题,一个文件或多个文件无法导入"的提示,导致音频导入失败的情况。本文介绍了一种通过Goldwave软件解决这一音频导入问题,并使用脚本语言简单、轻松实现歌词和音频的同步。
- z3 R5 b, c9 H" h& U5 |) {
# U) c6 }6 Y8 p5 A/ s # g8 w( g" g% B+ r
4 q9 S1 t1 {( C& k4 G首先了解一下音频的几种常见格式:
( x3 _8 v9 Z* S& ~
0 V" ]3 C: i4 Fmp3(mpeg-1 audio layer 3): 能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。
3 h7 o' S: d: |wma(windows media audio):是微软在互联网音频、视频领域的力作。常常用于在线收听和广播的首选,wma格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。
4 N$ }% X# Q5 g% Lwav 也叫一种波形声音文件格式,是最早的数字音频格式,被Windows 平台及其应用程序广泛支持。采用44.1kHz 的采样频率,16 位量化位数,跟CD 一样,对存储空间需求太大不便于交流和传播。 ) V5 X" e1 [5 @0 @1 c; x- e0 M) m
# b+ v& q% V0 c% Z# n属性(采样频率):
3 Q8 A2 M1 w5 F6 f% |
# a" A. l- W3 O0 t: ]# s: T5KHZ:只适合于说话声音
# D$ D* Z1 b; J ?' y11khz:相当于电话音质。是标准CD采样率的1/2,是最低的推荐品质1 \# l5 f; C7 \% {
22khz:相当于FM广播的声音品质。相当于标准CD采样率的1/2,是供WEB播放的通用选择
' Z* e. v, L0 q S44khz:理论上的CD音质界限。标准CD采样率 9 i/ u& ^* v* N' V& [2 M
G/ G" Z0 N' i8 ?2 V: F采样位数:& R( ~! W# ]" I: ~3 j) t7 J
# j( k. N* R# o9 f2 K- `. W% Y如:一段相同的音乐信息,16位声卡能把它分为64K,80K,96K,,,等精度单位进行处理,但这个数值越大,解析度就越高,声音就越真实。
3 z2 L# r8 z- @: ?% e8 }当对采样频率、采样位数(音质)二因素质量越高时,同时音乐的体积也成正比表现出越大。3 J( s, b$ q2 i: Y. o$ L
确定音乐被flash无法识别导入后,首先我们要考虑以下几个问题: 5 Q+ W9 y" [; m; R8 a1 v
, D/ v# L) k- i8 w7 e5 G* d9 ^再次确认无法导入的mp3歌曲是我们需要编辑的文件。包括再次确定2点因素:音乐大小、音质 B2 B1 U6 b9 o+ L& \
要知道即使是相同的歌曲体积大小不同,也会出现音质的等级不同。一支质量好、体积小的音乐对Flash是很有益处的。
5 o- j% a, n5 g: p4 u2 P: j搜索网络音乐资源,在以上2点基础上再进行确定。并不是没有这样的可能:相等音质歌曲体积大小相差3倍左右,并可直接导入。
* H+ Y3 l7 a- @# W r' d0 \ l* B' F7 P7 U% T8 a0 y
+ P# g2 z3 p3 B, s" ^
下面我们打开Goldwave软件~来看看如何操作 4 ]0 o4 ^4 @; [0 D
9 \1 ?' [4 P$ S$ C2 ]! _
7 s- D7 y: W: `音乐无法导入的问题主要是所导入MP3音乐与flash所要求格式、属性不符,那么我们在这儿通过修改音乐属性包括音层,HZ(赫兹)的改变。
% t! ^$ L. Q, r* b3 ^( O) }4 A; U( Z+ s! c( u* z! R# W
打开goldwave软件。在界面找到“打开”或:文件“文件---打开”选中转换歌曲
; ~) N6 X5 F/ y# O/ O解压音乐后,找开菜单栏---“文件”。导入选择文件“另存为”,当然如果需要对音乐段进行裁剪,可通过工具栏中进行选择,这里我们不再讨论。
' P A$ d/ d6 g5 a& e4 _1 K在弹出菜单中,选择保存类型:MP3。! B' {4 e v! `3 h- y5 p0 d
打开下面的属性菜单,选择各属性并修改:采样频率:22050HZ,已相当于标准CD采样率1/2。采样位数:64KPa,已接近最真实声音,个人经验选择采样位数:32KPa就可以达到基本的音质要求。
" S& ^7 W2 n6 h, Z X3 Q2 J- I$ c6 o检查体积大小、试听音质。主要是对编辑后的体积大小检查,及音质确认:体积是否满足需要,音乐是否清晰。那有人就想,我再设置高效果会更好!~没问题!可是要知道音乐效果好了,在flash中体积就大了。从flash减肥上来说不可取,音乐只是flash一部分。当然你也可以保存更低的采样频率、采样位数,从而音乐体积更小~音质则根据每个人的需要量力而行,选择较好音质同时体积不大,这也是结合Flash对音乐的要求。音乐1~2m以上、整体swf文件大小,对下载、播放是否流利或有影响,也是主要要考虑的问题。& x$ `8 l6 L4 O7 R0 X
回到flash软件,导入mp3,正常导入并检查库中元件。
, c) a8 T4 O4 ~, U' Z- c$ o8 P& L注意这里还可能可能会出现Mp3不能导入的情况,我个人的经验是将原音乐首先另存为wma格式,接着要不嫌麻烦的再次另存为Mp3,往往这样就能解决问题,具体的原因还不能解释清楚。) w/ i% K. e. D
打开库面板,选中元件鼠标右键,选择“导出设置”。$ l* ]1 N7 Z7 ~- h) W2 W
选择“声音设置”--改“默认”为“MP3”。再来一次比特率、品质设置 。
: M+ h. @7 B7 p1 N3 ?4 J9 {+ z1 T再选择“输出”--声音设置,进行修改设置,查看swf文件已降低,当然还可以降到更低,例如16kps甚至更低,但这时音质无法保证,因此提倡合理、适当分配音乐质量及体积大小。% `7 z( U$ ^- N$ l/ b
0 Y1 y$ W2 y+ K( k! b8 ]( Z/ W! M+ I1 N* [1 d4 ]
歌词和音频的同步,用于swf中的字幕制作4 S2 f! L; O* q& a# k% N& `8 k
. A5 O0 A2 A; F# z7 d* H打开库面板,点选音频文件,鼠标右键选择“链接属性”,修改标识符为“music”。
$ n5 { O a5 h' F在时间轴上新建一个图层命名为“文本”。
# f X& `& }, A( e, B4 a0 _; M使用文字工具输入第一句歌词,在属性面板上修改文本属性为“动态”,自变量为“x” 。+ |' s7 `; |6 P+ ^5 O
在第1帧处插入如下代码,同时执行导入库中的音频文件:
9 `8 N9 F9 r4 h8 d( n; b
& u6 M$ Z: ?- M7 S4 Winc = 0; " c- W# b, ~* |' l0 J! H( T% {
music = new Sound();
+ Q( s1 H i& J4 gmusic.attachSound("music");
( o+ Q, d' D. T4 A, vmusic.start();
0 D( L" S: ^9 O1 p
: x. z& x* Z0 M W新建图层2,命名“as”层,第一帧处插入以下代码:
6 P: H/ f1 u* F! V4 G" v
* T# t# x# \- L0 Pstop();
: h; [6 q8 b1 y# V3 bthis.onEnterFrame = function() { 7 e/ d0 X$ t" J) \
if (inc>10) {
8 Z. U7 z! m( C# \ gotoAndStop(1); 0 ]7 w- L( t, ^! S; |; h' Y2 Z
} # G* s7 w6 V. Q6 O& @$ @, n
labelTimeList = [ 5, 11.5, 16, 21.5, 26.5 ,31.5];
3 \$ t+ i X N) Z" ^ musictext = ["在东京铁塔第一次眺望", "看灯火模仿坠落的星光", "我终於到达但却更悲伤", "一个人完成我们的梦想"];
6 |$ s+ |, x0 h if (getTimer()>labelTimeList[inc]*1000) { 1 g x5 x9 q" u3 C8 |5 p j
x = musictext[inc];
h, n+ ~" T$ i+ \+ A" x inc == inc++; - K4 ]$ F+ r$ J) m+ z$ Z
}
( Y. J O, q* p5 \};
0 w! V6 c- k! u' _+ k0 r' O" jthis.onEnterFrame = function() { //自定义函数,当这个场景载入的时候执行自定义函数
2 `5 _2 c" k, q5 p4 A3 | if (getTimer()>labelTimeList[inc]*1000) { //如果以用时间大于下载时间.则X变量的值为musictext[inc], inc变量加一后在返回值给inc
4 z: v* X, |2 k8 g! I* O0 |* T% Q x = musictext[inc];
" D' e2 G; V, e# e9 }- L! i; @3 o# U0 ] inc == inc++; + s% n+ J: @0 w/ b% {
} % [2 v) p% v! Q/ N8 e, c
};4 J* f1 \& O$ o" w& c# Z
labelTimeList=[5,11.5,16,21.5,26.5,31.5] //分别为歌词“起”的时间" [) `$ [. u/ T6 I a% M1 }1 B# X
3 J. I- e) @+ R2 A. Y# g, R: W$ m* A% ZCtrl+Enter回车测试效果。! G) U) L9 G$ J
|
|