2011-06-14 20 views
5

我正在嘗試基於攝像頭的應用程序。我開始這樣的代碼:如何提高使用AS3的相機質量?

import flash.media.Camera; 
import flash.media.Video; 
var cam:Camera = Camera.getCamera(); 
a.vid1.attachCamera(cam); 
a.vid1.smoothing = true; 

我的問題是,視頻的質量。 我正在使用iMac機器,其中相機質量很好。 有沒有什麼辦法可以提高攝像機輸出的質量?

感謝您的幫助。

回答

10

這裏是一個示例代碼

package 
{ 
    import flash.display.DisplayObject; 
    import flash.display.Sprite; 
    import flash.display.StageAlign; 
    import flash.display.StageScaleMode; 
    import flash.events.ActivityEvent; 
    import flash.events.MouseEvent; 
    import flash.media.Camera; 
    import flash.media.Video; 

    public class iosTest extends Sprite 
    { 

     private var cam:Camera; 
     private var vid:Video; 


     public function iosTest() 
     { 
      super(); 

      // support autoOrients 
      stage.align = StageAlign.TOP_LEFT; 
      stage.scaleMode = StageScaleMode.NO_SCALE; 
      cam = Camera.getCamera(); 

      if (!cam) 
      { 
       trace("No camera is installed."); 
      } 
      else 
      { 
       connectCamera(); 
      } 
     } 

     private function connectCamera():void 
     { 
      cam.setMode(640, 480, 25); 
      cam.setQuality(0,100); 
      vid    = new Video(); 
      vid.width  = cam.width; 
      vid.height  = cam.height; 
      vid.attachCamera(cam); 
      addChild(vid);  

      stage.addEventListener(MouseEvent.CLICK, clickHandler); 
     } 

     private function clickHandler(e:MouseEvent):void 
     { 

      return; 

      switch (cam.width) { 
       case 160: 
        cam.setMode(320, 240, 10); 
        break; 
       case 320: 
        cam.setMode(640, 480, 5); 
        break; 
       default: 
        cam.setMode(160, 120, 15); 
        break; 
      } 
      removeChild(vid);   
      connectCamera(); 
     } 

    } 
} 
+1

不錯,但爲什麼你隨機有超()在那裏? – Marty 2011-06-14 07:03:01

+0

有時候最好不要。在這種情況下可能不需要,但我習慣總是把它寫在構造函數中。 – 2011-06-14 07:09:59

+0

公平的不夠。super()通常只在標記一個覆蓋方法時才需要。 – Marty 2011-06-14 07:13:49

3

使用setQuality()

參數

帶寬:整數 - 指定最大 量的帶寬,目前 輸出視頻輸入信號可以使用,以每秒字節數 。若要指定Flash播放器視頻可根據需要使用盡可能多的帶寬 以保持質量值 ,請將帶寬傳遞給0。所述 默認值爲16384

質量:整數 - 指定圖像質量的 要求的水平的整數,如由 壓縮 的量來確定施加到各 視頻幀。可接受的值範圍從1(最低質量,最大 壓縮)到100(最高質量, 無壓縮)的 。要指定 圖片質量可以根據需要變化爲 避免超出帶寬,請將0傳遞給 質量。

+0

@Marty ......我想,與setQuality command.Same輸出。輸出像素化。我也申請了vid1.smoothing = true;導致模糊,當然質量下降。 – 2011-06-14 05:39:45

+0

我不認爲你可以提高這種方法所能提供的質量。 – Marty 2011-06-14 05:53:24

+0

@Marty ...非常感謝你。 – 2011-06-14 06:20:43