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

  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文件。

热门文章推荐

请稍候...

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

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