tencent cloud

フィードバック

最終更新日:2023-02-20 16:24:27
    このドキュメントでは、主にローカルストリームのカスタムキャプチャおよびオーディオビデオストリームのカスタム再生とレンダリングなどの高レベルの使用方法を紹介します。

    ユーザー定義キャプチャ

    ローカルストリームは、{@link TRTC.createStream createStream()}で作成したときに、SDKのデフォルトのキャプチャメソッドを使用するように指定することができます。
    カメラとマイクからのオーディオビデオデータのキャプチャは、以下のように行います。
    const localStream = TRTC.createStream({ userId, audio: true, video: true });
    localStream.initialize().then(() => {
    // local stream initialized success
    });
    また、画面共有ストリームをキャプチャすることもできます。
    const localStream = TRTC.createStream({ userId, audio: false, screen: true });
    localStream.initialize().then(() => {
    // local stream initialized success
    });
    上記のローカルストリームは、どちらもSDK のデフォルトキャプチャメソッドを使用して作成されます。開発者がオーディオビデオストリーミングの前処理を行いやすくするため、createStreamは外部のオーディオビデオソースからのローカルストリームの作成をサポートしています。開発者はこのメソッドでローカルストリームを作成することにより、以下のようなユーザー定義キャプチャを実装できます。
    getUserMediaを使用して、カメラやマイクのオーディオビデオストリーミングをキャプチャすることができます。
    getDisplayMediaから画面共有ストリームをキャプチャします。
    captureStreamから画面で再生されているオーディオビデオをキャプチャします。
    captureStreamからcanvasキャンバスのアニメーションをキャプチャします。

    画面で再生されているビデオソースをキャプチャします

    // 現在お使いのブラウザがvideoエレメントからのstreamキャプチャをサポートしているかどうかチェックします
    const isVideoCapturingSupported = () => {
    if (typeof document === 'undefined') {
    return false;
    }
    const videoElement = document.createElement('video');
    return ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].some(item => item in videoElement);
    };
    
    // 現在お使いのブラウザがvideoエレメントからのstreamキャプチャをサポートしているかどうかチェックします
    if (!isVideoCapturingSupported()) {
    console.log('your browser does not support capturing stream from video element');
    return
    }
    // 再生中のビデオのvideoタグを取得します
    const video = document.getElementById('your-video-element-ID');
    // 再生したビデオからビデオストリームをキャプチャします
    const stream = video.captureStream();
    const audioTrack = stream.getAudioTracks()[0];
    const videoTrack = stream.getVideoTracks()[0];
    
    const localStream = TRTC.createStream({ userId, audioSource: audioTrack, videoSource: videoTrack });
    
    // ビデオのプロパティが外部から渡されたビデオソースと一致していることを確認してください。一致していない場合、ビデオ通話に影響を及ぼします
    localStream.setVideoProfile('480p');
    
    localStream.initialize().then(() => {
    // local stream initialized success
    });

    canvasのアニメーションをキャプチャします

    // 現在お使いのブラウザがvideoエレメントからのcanvasキャプチャをサポートしているかどうかチェックします
    const isCanvasCapturingSupported = () => {
    if (typeof document === 'undefined') {
    return false;
    }
    const canvasElement = document.createElement('canvas');
    return ['captureStream', 'mozCaptureStream', 'webkitCaptureStream'].some(item => item in canvasElement);
    };
    
    // 現在お使いのブラウザがvideoエレメントからのcanvasキャプチャをサポートしているかどうかチェックします
    if (!isCanvasCapturingSupported()) {
    console.log('your browser does not support capturing stream from canvas element');
    return
    }
    // お客様のcanvasタグを取得します
    const canvas = document.getElementById('your-canvas-element-ID');
    
    // canvasから15fpsのビデオストリームをキャプチャします
    const fps = 15;
    const stream = canvas.captureStream(fps);
    const videoTrack = stream.getVideoTracks()[0];
    
    const localStream = TRTC.createStream({ userId, videoSource: videoTrack });
    
    // ビデオのプロパティが外部から渡されたビデオソースと一致していることを確認してください。一致していない場合、ビデオ通話に影響を及ぼします
    localStream.setVideoProfile('480p');
    
    localStream.initialize().then(() => {
    // local stream initialized success
    });

    カスタム再生レンダリング

    TRTC.createStream()で作成・初期化したローカルストリームまたはClient.on('stream-added')で受け取ったリモートストリームは、オーディオビデオストリーミングオブジェクトのStream.play()メソッドによって、オーディオとビデオの再生レンダリングを行うことができます。Stream.play()内部には、オーディオプレーヤーとビデオプレーヤーが自動的に作成され、対応する<audio>/<video>タグがAppから渡されたDivコンテナに挿入されます。
    Appが独自プレーヤーを使用したい場合、Stream.play()/stop()メソッドをバイパスして呼び出し、Stream.getAudioTrack()/Stream.getVideoTrack()メソッドで対応するオーディオビデオトラックを取得することができます。次に、自分のプレーヤーを利用してオーディオビデオの再生レンダリングを行います。このカスタム再生レンダリングを使用すると、Stream.on('player-state-changed')イベントがトリガーされないため、AppはオーディオビデオトラックMediaStreamTrackmute/unmute/endedなどのイベントを監視し、現在のオーディオビデオデータストリームの状態を判断する必要があります。
    同時に、AppレイヤーはClient.on('stream-added')Client.on('stream-updated')およびClient.on('stream-removed')などのイベントを監視することによって、オーディオビデオストリーミングのライフサイクルを処理する必要があります。
    注意
    'stream-added'と'stream-updated'という2つのイベント処理のコールバックでは、オーディオまたはビデオtrackがあるかどうかをチェックする必要があります。’stream-updated‘イベント処理では、オーディオまたはビデオtrackがある場合、プレーヤーを更新して最新のオーディオまたはビデオtrackで再生するようにしてください。
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)