2017-04-20 1 views
0

Ich möchte ein Video erfassen. Danach möchte ich das Video nach einem Klick auf eine Schaltfläche abspielen. Ich arbeite mit Cordova für eine iOS- und Android-App. Ich arbeite mit den Plugins cordova-plugin-media-capture und cordova-plugin-streaming-media.Erstellen und Erfassen von Video in iOS mit Cordova

Caputring das Video funktioniert finde. Aber wenn ich auf der „Play Video“ klicken, erhalte ich einen Fehler in der Konsole:

ReferenceError: Can't find variable: playVideo

Was ist falsch? Hier ist meine Funktion:

//cordova media caputre plugin 
document.addEventListener("deviceready", init, false); 
function init() { 

    document.querySelector("#takeVideo").addEventListener("touchend", function() { 
     console.log("Take video"); 
     navigator.device.capture.captureVideo(captureSuccess, captureError, {limit: 1}); 
    }, false); 

} 

function captureError(e) { 
    console.log("capture error: "+JSON.stringify(e)); 
} 

// capture callback 
var captureSuccess = function(mediaFiles) { 
    var i, path, len; 
    for (i = 0, len = mediaFiles.length; i < len; i += 1) { 
     path = mediaFiles[i].fullPath; 
     console.log(mediaFiles[i].fullPath); 

      function playVideo(videoUrl) { 
       // Play a video with callbacks 
       var options = { 
       mustWatch: true, 
       successCallback: function() { 
        console.log("Video was closed without error."); 
       }, 
       errorCallback: function(errMsg) { 
        console.log("Error! " + errMsg); 
       } 
       }; 
       window.plugins.streamingMedia.playVideo(path, options); 

      } 

    } 
}; 

Meine Tasten (HTML)

<button id="takeVideo">Take Video</button> 

<input type="url" size="60" value="" id="vidUrl"/><br/> 
<button type="button" onclick="playVideo(document.getElementById('vidUrl').value);">Play Video</button> 
+0

Haben Sie versucht, den Namen Ihrer eigenen Funktion playVideo zu ändern? scheint, als ob Sie eine Namenskollision haben. Und vielleicht ist das nur, weil, wenn SO, aber Sie eine Funktion innerhalb einer Funktion deklarieren und dann aus Ihrem HTML aufrufen, was nicht möglich ist ... – Kris

Antwort

0

bearbeiten

Hier ist mein Versuch, den Code bei der Anpassung an Arbeit:

JavaScript;

document.addEventListener("deviceready", init, false); 

function init() { 

    document.getElementById("takeVideo").addEventListener("touchend", function() { 

     console.log("Take video"); 

     navigator.device.capture.captureVideo(captureSuccess, captureError, { 
      limit: 1 
     }); 

    }, false); 

    document.getElementById("playButton").addEventListener("touchend", function() { 

     playVideo(document.getElementById('vidUrl').innerHTML); 

    }); 

} 

function captureError(e) { 

    console.log("capture error: " + JSON.stringify(e)); 
} 


function captureSucess(mediaFile) { 

    //No need for a loop as we have limited the user to take 1 video 
    var path = mediaFile.fullPath; 
    var vidUrlElement = document.getElementById('vidUrl'); 
    vidUrlElement.innerHTML = path; 


} 

function playVideo(videoUrl) { 
    // Play a video with callbacks 
    var options = { 
     mustWatch: true, 
     successCallback: function() { 
      console.log("Video was closed without error."); 
     }, 
     errorCallback: function(errMsg) { 
      console.log("Error! " + errMsg); 
     } 
    }; 
    window.plugins.streamingMedia.playVideo(videoUrl, options); 

} 

HTML;

<button id="takeVideo">Take Video</button> 
<br/> 
<div id="vidUrl"></div> 
<br/> 
<button id="playButton">Play Video</button> 

Original-

Haben Sie versucht, für Schleife die playvideo() Funktion außerhalb des bewegten?

Verwandte Themen