FCS中发布和播放MP3

播放MP3文件
我们知道,Flash中默认的流式播放格式是Flv格式,但是在应用程序中,你可以通过客户端脚本来播放MP3音频文件和ID3信息,并使用服务器端脚本发布到stream流。
你需要上传MP3文件到服务器端的/streams/application_instance目录(Macromedia FCS MX 1.5 在录制视频流的时候会自动创建 streams 目录,如果不存在,你也可以手动创建)。例如你有个名为CDPlayerApp应用程序,你可以上传MP3文件到/applications/CDPlayerApp/streams/application_instance目录。
通过设定共享目录,你还可以在其它应用程序之间共享MP3。
找到Vhost.xml文件中的节点,在中添加需要共享的目录,如:
foo;c:/data
表示所有含有foo名称的目录都会被定向到c:/data目录,如foo/bar会被定向为c:/data/bar.flv。
详细的Vhost.xml说明可以参考FlashCom管理手册中相关部分。
然后,通过Stream.play指令指定播放的路径和想要播放的MP3文件。为了播放MP3文件,我们需要使用 NetStream对象的play方法,或者使用MC对象的attachAudio方法,特别需要注意的是,在播放文件前面要加上mp3播放标识前缀 mp3:,我们来看代码示例:
1 : //非共享方式播放
2 : vidObj.attachVideo(mystream);
3 : mystream.play( 'mp3:bolero' );
4 : //文件bolero.mp3在FCS服务器的 C:/mp3_files 目录下面
5 : //该目录在vhost.xml中被映射到虚拟目录 mp3dir
6 : movieObj.attachAudio(mystream2);
7 : mystream2.play( 'mp3:mp3dir/bolero' );


提示: 在使用 NetStream.play 方法的时候如果不指定视频或音频格式,会默认为FLV格式, 所以在播放MP3的时候,你必须指定格式播放。也就是说,flv:granada和granada都会播放文件granada.flv,但是mp3:bolero只会播放文件bolero.mp3。注意,这里播放的文件都在服务器端。

要播放MP3文件的ID3信息,必须使用播放前缀id3:并定义相应的回调函数来捕捉id3数据。例如,显示bolero.mp3文件的ID3 信息:
1 : //displays the ID3 tag of bolero.mp3
2 : mystream.play( 'id3:bolero' );
3 : //callback function to capture the ID3 data. Data will be displayed with
4 : //'info.' preceding the data from the tag, for example, info.songtitle.
5 : mystream.onId3 = function (info){
6 : for (i in info){
7 : trace(i + ':' + info[ i ]);
8 : }
9 : }


支持的MP3 ID3信息的版本
FlashCom server 1.5 支持UTF-8, UTF-16, and ISO-8859-1 格式的 1.0, 2.3和 2.4.版本的ID3信息,并且只支持文本数据,例如:歌曲名、作者、备注和录制时间等。

使用服务器端脚本
你还可以使用服务器端的Stream对象来播放MP3和获取MP3文件的长度,更详细的可以参考服务器端脚本参考中的Stream.play and Stream.length
要删除MP3文件可以使用Application.clearStreams方法,
下面来看一个例子,通过Stream.play方法来发布MP3:
01 : // Set up the server stream
02 : application.myStream = Stream.get( 'music' );
03 : if (application.myStream)
04 : {
05 : // Publish the MP3 file bolero.mp3 to the stream 'music'
06 : // Use the mp3: prefix in front of the stream name and specify 0 for the
07 : startTime parameter to indicate the server should play the recorded stream
08 : bolero.mp3
09 : application.myStream.play('mp3:bolero', 0, -1);
10 : }

使用 Stream.play 方法来捕获和播放 ID3 信息,请参考下面的代码示例:
01 : // Set up the server stream
02 : application.myStream = Stream.get( 'description' );
03 : application.myStream.onId3 = function(info)
04 : {
05 : for (i in info)
06 : {
07 : trace(i + ': ' + info[ i ]);
08 : }
09 : }
10 : if (application.myStream)
11 : {
12 : // Publish the ID3 text tag data of bolero.mp3 to a stream 'description'.
13 : // Use the id3: prefix in front of the stream name and specify 0 for the
14 : startTime parameter
15 : application.myStream.play( 'id3:bolero', 0, -1);
16 : }
 

你可能感兴趣的:([F],FCS技术专栏,stream,服务器,flv,server,function,脚本)