Control de cámara web programático

Además del Butón API personalizado, puede controlar programáticamente la grabadora de la cámara web, es decir, sin necesidad de que el usuario interactúe. Debería combinar el control programático de la cámara web con la retrollamada onWebcamStatusChange, que le permite mantener el estado de su código sincronizado con el estado real de la grabadora de la cámara web. La process.open() llamada del Botón API personalizado regresa a una Promesa Javascript, que se resuelve en un objeto API de cámara web cuando se muestra el widget de Clipchamp:

<script type="text/javascript">
    var process = clipchamp({
        inputs: ['camera'], // go directly to the webcam
        enable: [
            'no-thank-you', // close widget after upload and skip final 'Thank you' screen
            'no-user-retry', // directly upload video after finishing recording
            'mobile-webcam-format-fallback' // use inline recorder in Chrome on Android
        ],
        onWebcamStatusChange: function(status) {
            // handle current webcam and recording status (optional)
        }
    });
    process.open().then(function(remote) {
        // Webcam widget is now open.
        // First check if webcam/phone camera is ready:
        remote.areRecordingDevicesReady().then(function() {
            // Webcam/camera can be used on this browser/device.
            // Now call remote.startRecording() to start recording.
        }).catch(function() {
            // webcam/camera not accessible on this browser/device
        });
    });
</script>

Recomendamos llamar inicialmente la función areRecordingDevicesReady(), que se resuelve si puede accederse con éxito a la cámara web y la grabación es por lo general posible. Puede utilizar esta llamada como una comprobación «preflight» para confirmar que las siguientes llamadas pueden realizarse. Por favor, tenga en cuenta que areRecordingDevicesReady puede requerir la interacción del usuario para aprobar una ventana emergente del navegador que solicita al navegador que apruebe el dominio api.clipchamp.com para acceder a la cámara web y al micrófono. Una vez aprobada, el permiso correspondiente normalmente se almacena en el perfil del navegador, pero puede revocarse en cualquier momento si el usuario limpia el caché de su navegador, utiliza el navegador en modo incógnito, hay nuevos dispositivos de hardware disponibles o se producen otros incidentes. Así pues, es una buena idea preceder cada invocación del control API programático de la cámara web con una llamada areRecordingDevicesReady(). Las otras funciones del control API programático de la cámara web:

  • startRecording(): Inicia la grabación si el widget de Clipchamp muestra la pantalla de la cámara web y la captura de la cámara web está activa.
  • pauseRecording(): Pone en pausa la grabación si una grabación iniciada previamente no está actualmente en pausa.
  • resumeRecording(): Reanuda la grabación si se inició una grabación previamente y actualmente está en pausa.
  • finishRecording(): Finaliza la grabación y activa el procesamiento posterior del vídeo.
  • cancelRecording(): Aborta una grabación y cierra el widget de Clipchamp.

Todas estas funciones son asincrónicas y pueden volver antes de que la correspondiente acción esté completada. Por favor, utilice la retrollamada onWebcamStatusChange para sincronizar cualquier Estado por su parte con el estado actual de la grabadora de la cámara web. Si se ha llamado a una función del control API de la cámara web y la grabadora de la cámara web está en un estado incompatible, puede que la llamada no se ponga en cola para una ejecución posterior cuando la grabadora de la cámara web haya llegado al estado correcto. Por ejemplo, el comportamiento del control API de la cámara web no está definido cuando llama a startRecording(), pero la retrollamada onWebcamStatusChange no ha señalado previamente que la captura de la cámara web se activó con éxito (capture_started).