Программное управление веб-камерой

С помощью API настраиваемой кнопки вы можете програмнно контролировать запись с веб-камеры даже без вмешательства пользователя. Вам необходимо совместить программное управление веб-камерой с обратным вызовом onWebcamStatusChange, который позволяет оставаться вашему коду в синхронизации с текущим состоянием веб-камеры. Функция process.open() API настраиваемой кнопки возвращает Javascript Promise, который связан с объектом API веб-камеры, созданным при активации соответствующего 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>

Мы рекомендуем прежде всего использовать функцию areRecordingDevicesReady(), которая позволяет узнать, доступна ли веб-камеры и возможна ли осуществить с помощью нее запись. Вы можете использовать эту функцию для «предварительной» проверки возможности выполнения ваших дальнейших инструкций. Пожалуйста, обратите внимание, что при выполнении функции areRecordingDevicesReady может понадобиться взаимодействие с пользователем, так как ему необходимо будет подтвердить доступ домена api.clipchamp.com к его веб-камере и микрофону. После получения такого доступа информация о получении разрешения обычно храниться в профиле браузера. Однако при очищении пользователем кеша браузера, использовании режима инкогнито или подключении новых устройств нужно будет снова получить разрешение на доступ. В любой случае, использование функции areRecordingDevicesReady() перед каждым вызовом API программного управления веб-камерой является хорошим тоном. Другие функции API программного управления веб-камерой:

  • startRecording(): Начало записи, если виджет Clipchamp показывает экран веб-камеры и включена опция захвата видео.
  • pauseRecording(): Пауза записи, если запись была прежде начата и если в данный момент пауза уже не активирована.
  • resumeRecording(): Продолжение записи после паузы, , если запись была прежде начата и если в данный момент активирована пауза.
  • finishRecording(): Завершение записи и запуск процесса обработки.
  • cancelRecording(): Обрыв процесса записи и закрытие виджета Clipchamp.

Все эти функции могут вызывать асинхронно до завершения соответствующего действия. Пожалуйста, используйте обратный вызов onWebcamStatusChange, чтобы синхронизировать состояние на вашей стороне с актуальным состоянием веб-камеры на стороне клиента. Если вызывается функция API управления веб-камерой и веб-камера находится в несовместимом состоянии, вызов не может быть поставлен в очередь для последующего выполнения, когда веб-камера достигнет правильного состояния. Например, окружение API веб-камеры не установлено, когда вы вызываете функцию startRecording(), в этом случае обратный вызов onWebcamStatusChange не сообщит вам о том, что камера была успешна включена (capture_started).