2016-02-11 48 views
7

का उपयोग कर Mediaelementjs का उपयोग करते हुए खेल रहा बंद हो जाता है कैसे स्वचालित रूप से एक वीडियो प्रतिक्रिया रिकॉर्ड करने के लिए, मैं सफलतापूर्वक एक videoplayer को लागू किया है, और एक end event जो तुरंत एडोब की एक फ्लैश रिकॉर्डर पॉप अप होने शुरू हो गया। वेबसाइट गोपनीयता सेटिंग्स पैनल में वेबसाइट सूचीबद्ध करना ब्राउज़र के माध्यम से माइक्रोफ़ोन और कैमरा तक सीधे पहुंच प्रदान करता है।के बाद वीडियो फ्लैश

enter image description here

प्रश्न:
वहाँ के बाद माइक्रोफोन और कैमरे के लिए उपयोग, उपयोगकर्ता द्वारा अनुमति दी है शुरू वीडियो रिकॉर्डिंग जैसे कुछ समारोह को गति प्रदान करने के लिए एक रास्ता है?

हम किसी भी तरह वीडियो रिकॉर्ड करने के उपयोगकर्ता फ्लैश का उपयोग कर माइक्रोफोन और कैमरे की अनुमति देता है के तुरंत बाद मिल सकता है।

+0

मैं आपकी समस्या नहीं दिख रहा। कैमरे और माइक का उपयोग करने के लिए आपके उपयोगकर्ता के स्वायत्तता के बाद आपको रिकॉर्डिंग शुरू करनी है ... – akmozo

+0

अच्छी तरह से समस्या है, मुझे नहीं पता कि फ्लैश की शुरुआत रिकॉर्डिंग घटना कैसे शुरू करें, चूंकि, यह फ्लैश की एक घटना है जिसका HTML html से कोई संबंध नहीं है। -_- –

+0

@AlexRumba ने स्पष्ट किया ताकि स्पष्ट किया जा सके: घटना [उपयोगकर्ता ने माइक्रोफ़ोन की अनुमति दी] HTML-पक्ष पर आग लगती है, और आपको फ्लैश-साइड पर कुछ [क्रिया] को responce के रूप में करने की आवश्यकता है? यदि ऐसा है तो पेज पर फ्लैश और जावास्क्रिप्ट को एक-दूसरे के साथ खेलने के कुछ तरीके हैं। वे हमेशा विश्वसनीय नहीं होते हैं (क्रॉस-ब्राउज़र होने की भावना में) लेकिन अधिकांश भाग के लिए वे चाल करते हैं। यदि यह आपके लिए दिलचस्प है - मैं संचार के तरीकों के साथ एक उत्तर बना सकता हूं [एचटीएमएल से फ्लैश तक, एक तरफा केवल अनुमति] मुझे पता है। –

उत्तर

4

मेरा जवाब, निम्न गुणवत्ता क्योंकि मैं कई साल पहले फ्लैश के लिए दिलचस्पी खो जाएगा। इसे रखने का सबसे विनम्र तरीका: फ्लैश के मेरे कौशल जंगली हैं। (जंगली द्वारा, मेरा मतलब है फ्लैश -8 एक्शनस्क्रिप्ट 2.0/फ्लैश सीएस 4 एक्शनस्क्रिप्ट 2.0 जंगली का स्तर)। वास्तविक समस्या क्या है - मेरे पास वर्तमान कंप्यूटर पर फ्लैश के लिए कोई परीक्षण वातावरण नहीं है। इस प्रकार, यह एक अंधे सलाह होगी। बग से सावधान रहें।

लेकिन, उज्ज्वल पक्ष पर, मैं एकीकृत फ्लैश और जावास्क्रिप्ट का अनुभव था। जो कुछ मैं देखता हूं उससे अभी भी प्रासंगिक है। फ्लैश करने के लिए

जावास्क्रिप्ट:

तकनीक है कि मैं जानता हूँ कि की लघु सूची

  1. ExternalInterface फ्लैश द्वारा प्रदान की वस्तु जावास्क्रिप्ट फ्लैश के अंदर तरीकों पर अमल की अनुमति देता है - इस एनीमेशन शुरू करने या डेटा लौट सकते हैं। दोष: सुरक्षा सेटिंग्स या प्लगइन के बग्गी कार्यान्वयन द्वारा बाहरी इंटरफेस को प्रतिबंधित किया जा सकता है।

  2. document.getElementById ('exampleMovie')। SetVariable ("someVariableName", "कुछ टेक्स्ट"); - संदेश प्रणाली के रूप में उपयोग करने के लिए - फ्लैश घड़ी जो सुनने की जाएगी जोड़ने - एक varialbe परिवर्तन

फ्लैश जावास्क्रिप्ट के लिए क्या किया:

  1. ExternalInterface फ्लैश द्वारा प्रदान की वस्तु फ्लैश से कार्यों को निष्पादित की अनुमति देता है जावास्क्रिप्ट। दोष: सुरक्षा सेटिंग्स या प्लगइन के बग्गी कार्यान्वयन द्वारा बाहरी इंटरफेस को प्रतिबंधित किया जा सकता है।

  2. getUrl ('जावास्क्रिप्ट: someJavascriptFunction ("एक", "बी", true);'); मुझे यकीन है कि अगर यह सुरक्षा कारणों के लिए प्रतिबंध लगा दिया था लेकिन यह काम कर सकता था नहीं हूँ। मुख्य दोष यह है कि यह एक तरफा बातचीत है।

मुझे लगता है कि बाहरी इंटरफ़ेस का उपयोग करके बातचीत को लागू करने का सबसे तार्किक तरीका है।

हाँ, आप एक तरह से बातचीत 2. और 2. इस्तेमाल कर सकते हैं संचार प्रोटोकॉल का निर्माण करने के लिए - मैं भी है कि प्रणाली की कल्पना कर सकते हैं ... लेकिन यह है कि एक सा भी विकृत^^ होगा। + मुझे 'SetVariable' के लिए ब्राउज़र समर्थन के बारे में कोई डेटा नहीं मिल रहा है।+ Stackoverflow फ़ायरफ़ॉक्स SetVariable is not working in Firefox में setVariable की अजीब व्यवहार की एक रिपोर्ट है


यहाँ बाहरी इंटरफ़ेस के लिए Oficial प्रलेखन है: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

कि पेज एक ब्राउज़र संगतता टेबल है। शायद प्रलेखन अद्यतन की जरूरत है - गूगल क्रोम का कोई निशान जो मेरी राय में अजीब लगता है ...

वैचारिक रूप से, आप बाहरी इंटरफ़ेस उस तरह का उपयोग करें:

// HTML 
// id must be equal to name here 
// and shouldn't contain symbols . - + */\ 
<object id="exampleFlash" name="exampleFlash" ... > 
    ... 
</object> 

// Javascript: 
document.getElementById('exampleFlash').methodExposedForJavascript('value') 

// ActionScript in Flash: 
import flash.external.ExternalInterface; 
ExternalInterface.addCallback("methodExposedForJavascript", someInternalFunction); 
function someInternalFunction(msg) { 
    // do something with msg - for example output it to existing txt field: 
    _root.txtExampleTxt.text = msg; 
} 

सबसे प्रासंगिक उदाहरण उस मैनुअल पेज पर अंतिम है http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/external/ExternalInterface.html

संक्षिप्त निर्देश जटिल उदाहरणों को संकलित करने के लिए कैसे करें: http://help.adobe.com/en_US/as3/dev/WS9b644acd4ebe5999-2734bf3c124372a52ff-8000.html

वे वास्तव में काफी सरल हैं। अधिकांश कथित जटिलता तथ्य है कि वे फ्लैश के तत्वों को प्रोग्राम के उत्पन्न से आता है - जैसे

// all that this code does - is creating simple TextField in your movie 
import flash.text.TextField; 
package { 
    public class ABC extends Sprite 
    { 
     private var output:TextField; 
     public function ABC() 
     { 
      output = new TextField(); 
      output.y = 25; 
      output.width = 450; 
      addChild(output); 
     } 
    } 
} 

इस उदाहरण आसान व्यक्त करने के लिए बनाने के लिए किया जाता है - लेकिन इस मूल रूप से 'अपने GUI का उपयोग पाठ क्षेत्र नामित बनाने के लिए रूप में ही है आउटपुट आपके पहले फ्रेम 'में।

मैं उस उदाहरण से कुछ भी अपरिचित कटौती करने की कोशिश करूंगा। "प्राप्त किया गया जावास्क्रिप्ट" पर ध्यान दें - यह एक ऐसा कार्य है जो जावास्क्रिप्ट द्वारा ट्रिगर किया जाएगा - आप अंदर प्रतिक्रिया जोड़ सकते हैं।

फ्लैश हिस्सा:

package { 

    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.external.ExternalInterface; 
    import flash.text.TextField; 
    import flash.utils.Timer; 
    import flash.text.TextFieldType; 
    import flash.text.TextFieldAutoSize; 
    import flash.system.Security; 

    public class ExternalInterfaceExample extends Sprite 
    { 
     private var output:TextField; 

     public function ExternalInterfaceExample() 
     { 
      // constructor code 
      Security.allowDomain("*"); 


      output = new TextField(); 
      output.y = 25; 
      output.width = 450; 
      output.height = 325; 
      output.multiline = true; 
      output.wordWrap = true; 
      output.border = true; 
      output.text = "Initializing...\n"; 
      addChild(output); 


      if (ExternalInterface.available) { 
       try { 
        output.appendText("Adding callback...\n"); 
        ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript); 
        if (checkJavaScriptReady()) { 
         output.appendText("JavaScript is ready.\n"); 
        } else { 
         output.appendText("JavaScript is not ready, creating timer.\n"); 
         var readyTimer:Timer = new Timer(100, 0); 
         readyTimer.addEventListener(TimerEvent.TIMER, timerHandler); 
         readyTimer.start(); 
        } 
       } catch (error:SecurityError) { 
        output.appendText("A SecurityError occurred: " + error.message + "\n"); 
       } catch (error:Error) { 
        output.appendText("An Error occurred: " + error.message + "\n"); 
       } 
      } else { 
       output.appendText("External interface is not available for this container."); 
      } 
     } 
     private function receivedFromJavaScript(value:String):void { 
      output.appendText("JavaScript says: " + value + "\n"); 
     } 
     private function checkJavaScriptReady():Boolean { 
      var isReady:Boolean = ExternalInterface.call("isReady"); 
      return isReady; 
     } 
     private function timerHandler(event:TimerEvent):void { 
      output.appendText("Checking JavaScript status...\n"); 
      var isReady:Boolean = checkJavaScriptReady(); 
      if (isReady) { 
       output.appendText("JavaScript is ready.\n"); 
       output.appendText("ExternalInterface.objectID = " + ExternalInterface.objectID + "\n"); 
       Timer(event.target).stop(); 
      } 
     } 
    } 
} 

HTML:

<!DOCTYPE html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>ExternalInterfaceExample</title> 
<script> 
    var jsReady = false; 
    function isReady() { 
     return jsReady; 
    } 
    function pageInit() { 
     jsReady = true; 
     document.forms["form1"].output.value += "\n" + "JavaScript is ready.\n"; 
    } 
    function sendToActionScript(value) { 
     document.getElementById("ExternalInterfaceExample").sendToActionScript(value); 
    } 
</script> 
</head> 
<body onload="pageInit();"> 

<object id="ExternalInterfaceExample" name="ExternalInterfaceExample" 
type="application/x-shockwave-flash" data="ExternalInterfaceExample.swf" width="550" height="400"> 
<param name="movie" value="ExternalInterfaceExample.swf"/> 
<param name="quality" value="high"/> 
<param name="allowscriptaccess" value="always"/> 
<a href="http://www.adobe.com/go/getflash"> 
    <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player"/> 
</a> 
</object> 

    <form name="form1" onsubmit="return false;"> 
     <input type="text" name="input" value="" /> 
     <input type="button" value="Send" onclick="sendToActionScript(this.form.input.value);" /><br /> 
     <textarea cols="60" rows="20" name="output" readonly="true">Initializing...</textarea> 
    </form> 

</body> 
</html> 
+0

मैंने पहले ही इसे लागू कर दिया है हालांकि समस्या फ्लैश फाइल की रिवर्स इंजीनियरिंग थी। मैं फ़ाइल को swf में संशोधित करने और पुन: संकलित करने के बाद कार्यशील फ़ाइल उत्पन्न नहीं कर सका। आपके प्रयास के लिए आपको ऊपर उठाया। –

+1

यह एक दुखद कहानी है। यदि आप रिवर्स-इंजीनियरिंग के साथ खेल रहे हैं जिसका मतलब है कि आपके पास स्रोत फ़ाइल और निर्देश नहीं हैं - फ़्लैश संस्करण में और किसके साथ एक्शनस्क्रिप्ट-वर्जन संकलित करता है? –

+0

यदि मुझे सही तरीके से याद है, तो फ़्लैश में फ्लाई पर अन्य फ्लैश मूवीज़ गतिशील रूप से लोड करने की क्षमता है। कभी-कभी इससे बग का कारण बन सकता है - जब उन 'अतिथि' फिल्मों में कोड कठोर रूप से इस धारणा पर निर्भर होता है कि वे _root हैं। लेकिन अक्सर 'अतिथि' फिल्में अतिथि के रूप में रह सकती हैं - बस ठीक है। तो हैक है - आप अपनी खुद की फिल्म बनाते हैं 2 चीजें बनाता है - 1. यह 'फिल्म को रिवर्स-इंजीनियर' असंभव बनाता है - और 2. यह आपके जावास्क्रिप्ट-ईवेंट से बात करता है। –

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