プログラムによるウェブカメラの操作

Custom Button APIのトップからは、ユーザーの操作が無くても、プログラムによってウェブカメラの操作が可能です。 プログラム操作のウェブカメラとonWebcamStatusChangeコールバックを組み合わせることにより、実際のウェブカメラレコーダーの状態とあなたのコードの状態の同期を維持できます。 process.open() 呼び出す カスタムボタンAPI 戻る Javascript Promise は、Clipchampウィジェットが次の表示のときにウェブカメラAPI オブジェクトを決定します。:

<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()機能のコールを推奨しており、これはウェブカメラへのアクセスが正常で録画が可能であることを確認するものです。この呼び出しは “preflight” として利用可能で、 その次の呼び出しが実行可能であるか確認します。areRecordingDevicesReadyがウェブカメラとマイクにアクセスするため、ドメイン名api.clipchamp.comを許可するかどうかのポップアップがブラウザに現れることがあります。一度許可すれば、対応する許可がブラウザの設定に保存されますが、ユーザーによってブラウザキャッシュの削除や、プライバシーモードの利用、新しいハードウェアの接続、その他の理由により、許可がリセットされる場合もあります。そのため、areRecordingDevicesReady()コールで前もってプログラムによるウェブカメラ操作APIを呼び出しておくと良いでしょう。プログラムによるウェブカメラ操作APIの他の機能は:

  • startRecording(): Clipchamp ウィジェットがウェブカメラのの画面を表示し、キャプチャがオンのときに録画を開始する。
  • pauseRecording(): 録画中に、一時停止の場合に一時停止する。
  • resumeRecording(): 録画中に、一時停止でない場合に録画を再開する。
  • finishRecording(): 録画を終了し、動画のその後のプロセスをトリガーする。
  • cancelRecording(): 録画を中断し、Clipchampウィジェットを閉じる。

全ての機能は同期されず、該当する処理が完了する前に戻る場合があります。実際のウェブカメラレコーダーの状態などを同期したいときは、ユーザー側でonWebcamStatusChange コールバック を使ってください。ウェブカメラの操作のためのAPIが呼び出され、ウェブカメラレコーダーの状態が非対応の場合、正しい状態になったとき、その後実行する際にコールがキューされない場合があります。startRecording()をコールしたときのウェブカメラの操作APIの動作は定義されていませんが、onWebcamStatusChangeはそれ以前にウェブカメラのキャプチャーが正常に起動した信号を出しません。 (capture_started).