WebAssembly로 카메라를 실시간으로 WebM 동영상으로 변환

원시 RGBA 버퍼를 WebM으로 변환하는 webm-wasm을 사용했습니다.

데모



Go 버튼을 클릭하면 카메라를 실시간으로 WebM 동영상으로 변환하여 WebM 동영상을 video 요소로 표시합니다.
chrome://flags/ 에서 Experimental Web Platform features를 활성화하지 않으면 작동하지 않습니다. Chrome Canary를 사용하세요.
데모
소스 코드
TransformStream webm wasm demo

1. 근로자 준비


    // ワーカーで`webm-wasm.js`ファイルをロードする
    const worker = new Worker("../dist/webm-transformstreamworker.umd.js");
    // `.wasm`ファイルのパスをワーカーに送る
    worker.postMessage("../dist/webm-wasm.wasm");
    // ワーカーの準備が出来るまで待つ
    await nextEvent(worker, "message");

2. 프레임 레이트나 화질 등의 정보를 송신한다


    worker.postMessage({
      timebaseDen: framerate,
      width: value.width,
      height: value.height,
      bitrate,
      // リアルタイムの場合はtrue
      realtime: true
    });

3. 스트림에서 RGBA 버퍼를 WebM 청크로 변환하는 함수 정의


    const webmTransform = (await nextEvent(worker, "message")).data;

4. 스트림에 3. 설정


    const webmStream = stream
      .pipeThrough(map(imageData => imageData.data.buffer))
      .pipeThrough(webmTransform);

5. 동영상 보기


    const webmMediaStream = mediaSourceStream(webmStream, {
      mimeType: `video/webm; codecs="vp8"`
    });
    const video = document.createElement("video");
    video.src = webmMediaStream;
    document.body.append(video);
    video.play();

좋은 웹페이지 즐겨찾기