2011-06-14 7 views
5

मैं एक वेबकैम आधारित एप्लिकेशन के लिए प्रयास कर रहा हूं। मैंने इस तरह कोड शुरू किया:एएस 3 का उपयोग कर कैमरे की गुणवत्ता में वृद्धि कैसे करें?

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

मेरी समस्या यह है कि वीडियो की गुणवत्ता। मैं एक आईमैक मशीन का उपयोग कर रहा हूं, जिसमें कैमरा गुणवत्ता अच्छी है। क्या कैमरा आउटपुट की गुणवत्ता बढ़ाने के लिए कोई तरीका है?

सहायता के लिए धन्यवाद।

उत्तर

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

+0

कभी-कभी इसे बेहतर नहीं है। शायद इस मामले में जरूरी नहीं है लेकिन मुझे इसे हमेशा निर्माता में लिखने के लिए प्रयोग किया जाता है। –

+0

पर्याप्त मेला .. सुपर() आमतौर पर केवल तभी जरूरी है जब आप ओवरराइड के लिए कोई विधि चिह्नित कर रहे हों। – Marty

3

उपयोग setQuality()

पैरामीटर

बैंडविड्थ: int - निर्दिष्ट करता है बैंडविड्थ की अधिकतम राशि है कि वर्तमान बाहर जाने वाले वीडियो फ़ीड बाइट्स प्रति सेकंड में, उपयोग कर सकते हैं। यह निर्दिष्ट करने के लिए कि फ्लैश प्लेयर वीडियो के मूल्य को बनाए रखने के लिए आवश्यक बैंडविड्थ का उपयोग कर सकता है, बैंडविड्थ के लिए 0 पास करें। - एक पूर्णांक है कि तस्वीर की गुणवत्ता के अपेक्षित स्तर निर्दिष्ट करता है, संपीड़न की राशि से निर्धारित होता है ताकि प्रत्येक वीडियो फ्रेम करने के लिए लागू किया जा रहा पूर्णांक : डिफ़ॉल्ट मान 16384.

गुणवत्ता है। स्वीकार्य मान 1 (निम्नतम गुणवत्ता, अधिकतम संपीड़न) से 100 तक (उच्चतम गुणवत्ता, कोई संपीड़न नहीं)। यह निर्दिष्ट करने के लिए कि चित्र गुणवत्ता से अधिक की आवश्यकता के अनुसार भिन्न हो सकती है बैंडविड्थ से अधिक, गुणवत्ता के लिए 0 पास करें।

+0

@Marty है ... मैंने कोशिश की है कि setQuality command.Same उत्पादन के साथ। आउटपुट पिक्सेललेट किया गया था। इसके अलावा मैंने vid1.smoothing = true लागू किया; जिसके परिणामस्वरूप धुंध, गुणवत्ता की कमी का नुकसान हुआ। –

+0

मुझे नहीं लगता कि आप इस विधि की पेशकश से परे गुणवत्ता को बढ़ा सकते हैं। – Marty

+0

@ मार्टी ... बहुत बहुत धन्यवाद आदमी। –

संबंधित मुद्दे