프로그래밍방식 웹캠 제어

사용자 맞춤 버튼 API 위에 사용자 상호 작용없이 프로그래밍방식으로 웹캠 녹화기를 제어할 수 있습니다. 프로그래밍방식 웹캠 제어를 코드의 상태와 웹캠 녹화기의 실제 상태를 동시에 유지할 수 있는 onWebcamStatusChange 콜백과 결합해야 합니다. 사용자 맞춤 버튼 APIprocess.open() 호출은 Clipchamp 위젯이 표시되면 웹캠 API 객체로 변환되는 자바스크립트 Promise로 반환합니다:

<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).