·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]flv视频播放器NetStream.play播放时遇到的问题(源代码示例)

时间:2013-02-23 12:46CuPlayer.com
Adobe AIR 和 Flash Player 9.0.115.0 和更高版本支持从标准 MPEG-4 容器格式中派生的文件。这些文件包括 F4V、MP4、M4A、MOV、MP4V、3GP 和 3G2(如果他们包含 H.264 视频和/或 HEAAC v2 编码音频)

代码中 play flv 格式的文件.没问题.
为何 play mp3 格式的时候. 就找不到了呢? 根目录存在 b.mp3 文件
错误提示是 Stream not found: b

  1. package  
  2. { 
  3.     import flash.display.Sprite; 
  4.     import flash.display.Stage; 
  5.     import flash.media.Sound; 
  6.     import flash.media.Microphone; 
  7.     import flash.media.SoundChannel; 
  8.     import flash.media.SoundTransform; 
  9.     import flash.media.SoundLoaderContext; 
  10.     import flash.net.*; 
  11.     import flash.events.*; 
  12.     public class rtmpPlayer extends Sprite  
  13.     { 
  14.         private var _sound:Sound; 
  15.         private var _netNc:NetConnection = new NetConnection(); 
  16.         private var _ns:NetStream; 
  17.         private var nsClient:CustomClient = new CustomClient(); 
  18.         private var soundXForm:SoundTransform = new SoundTransform(); 
  19.          
  20.          
  21.         public function rtmpPlayer() { 
  22.             soundXForm.volume = 0.5; 
  23.              
  24.             _netNc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus); 
  25.             _netNc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
  26.             _netNc.connect(null); 
  27.             //CuPLayer.com:addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);  
  28.         } 
  29.          
  30.         private function onNetStatus(event:NetStatusEvent=null):void { 
  31.             //CuPLayer.com:handles NetConnection and NetStream status events 
  32.             switch (event.info.code) { 
  33.                 case "NetConnection.Connect.Success": 
  34.                     //play stream if connection successful 
  35.                     connectStream(); 
  36.                     trace("NetConnection.Connect.Success"); 
  37.                     break; 
  38.                 case "NetStream.Play.StreamNotFound": 
  39.                     //error if stream file not found in 
  40.                     //CuPLayer.com:location specified 
  41.                     trace("Stream not found: " + _soundUrl); 
  42.                     break; 
  43.                 case "NetStream.Play.Stop": 
  44.                     //do if video is stopped 
  45.                     //CuPLayer.com:videoPlayComplete(); 
  46.                     trace("do if video is stopped"); 
  47.                     break; 
  48.             } 
  49.             //trace(event.info.code); 
  50.         } 
  51.          
  52.         private function connectStream():void { 
  53.             _ns = new NetStream(_netNc); 
  54.             _ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,doAsyncError); 
  55.             _ns.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); 
  56.              
  57.             _ns.client = nsClient; 
  58.              
  59.             //_ns.play("b.flv"); 
  60.             _ns.play("mp3:b"); 
  61.              
  62.             //_ns.soundTransform = soundXForm; 
  63.         } 
  64.          
  65.         private function securityErrorHandler(event:SecurityErrorEvent):void { 
  66.             trace("securityErrorHandler: " + event); 
  67.         } 
  68.          
  69.         private function asyncErrorHandler(event:AsyncErrorEvent):void { 
  70.              
  71.         } 
  72.          
  73.         private function onEnterFrameHandler(event:Event):void { 
  74.             //if(_ns) trace(_ns.bytesLoaded + "==" + _ns.bytesTotal); 
  75.         } 
  76.          
  77.         public function doAsyncError (event:AsyncErrorEvent):void { 
  78.             trace("asyncErrorHandler: " + event.text); 
  79.         } 
  80.     } 
  81. } 
  82.  
  83. class CustomClient { 
  84.     public function onPlayStatus( info:Object ):void{ 
  85.         switch ( info.code ){ 
  86.             case "NetStream.Play.Switch": 
  87.                 break; 
  88.             case "NetStream.Play.Complete": 
  89.                 trace("soundCompleteHandler"); 
  90.                 break; 
  91.             default: 
  92.                 for ( var a:String in info ) {  
  93.                 trace(a + " " + info[a]); 
  94.                 } 
  95.                 break; 
  96.         } 
  97.     } 
  98.      
  99.     public function onCuePoint(info:Object):void { 
  100.         trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); 
  101.     } 
  102.      
  103.     public function onMetaData(info:Object):void { 
  104.         trace("metadata: duration=" + info.duration + " width=" + info.width + 
    "
     height=" + info.height + " framerate=" + info.framerate); 
  105.     } 
  106. } 

  Adobe AIR 和 Flash Player 9.0.115.0 和更高版本支持从标准 MPEG-4 容器格式中派生的文件。这些文件包括 F4V、MP4、M4A、MOV、MP4V、3GP 和 3G2(如果他们包含 H.264 视频和/或 HEAAC v2 编码音频)。与 Sorenson 或 On2 中相同的编码配置文件相比,H.264 可以在更低的位速率下交付更高品质的视频。AAC 是在 MPEG-4 视频标准中定义的一种标准音频格式。HE-AAC v2 是 AAC 的扩展,它使用频带复制 (SBR) 和参量立体声 (PS) 技术在低比特率下提高编码效率。

  因为NetStream流不支持MP3格式的解码,把mp3文件转换成AAC,或者可以使用Sound类的URLRequest属性添加mp3文件。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器