【问题标题】:WebRTC: Switch from Video Sharing to Screen sharing during callWebRTC:通话期间从视频共享切换到屏幕共享
【发布时间】:2014-04-04 14:24:01
【问题描述】:

最初,我有两个不同的网页:

一个是进行视频通话和 其他是做屏幕共享

现在,我想在一个页面中完成这两个操作。

这是场景:

在实时通话期间,用户想要停止分享他/她的视频并开始分享屏幕。 之后,他/她再次希望关闭屏幕共享并开始视频共享。

为了清楚起见,这里有一些我想问的问题:

在调用方:

1) 如何将本地流从视频更改为屏幕,反之亦然? 2) 完成后,如何将其分配给本地视频元素?

在被调用方:

1) 如果我正在接收的当前流从视频更改为屏幕,我该如何处理? 2)如果我收到的流已经停止,我该如何处理?我的意思是,现在我既不能接收视频也不能接收屏幕(只是音频)

请在这方面帮助我。如果有任何可用的开源代码,也请分享它们的链接。

仅供参考,我试图使用以下代码处理它。 (我知道这很幼稚,不会起作用)

function handleUserMedia(newStream){

        var localvideo = document.getElementById("localvideo");
        localvideo.src = URL.createObjectURL(newStream);
        localStream = newStream;
        sendMessage('got user media');

        if (isInitiator) {
            maybeStart();
        }
     }

     function handleUserMediaError(error){
        console.log(error);
     }        

     var video_constraints = {video: true, audio: true};
     var screen_constraints = {video: { mandatory: { chromeMediaSource: 'screen' } }};

     getUserMedia(video_constraints, handleUserMedia, handleUserMediaError);

     //getUserMedia(screen_constraints, handleUserMedia, handleUserMediaError);

     $scope.btnLabel = 'Share Screen';

     $scope.toggleSelected = function () {

         $scope.selected = !$scope.selected;

         if($scope.selected)
         {
             getUserMedia(screen_constraints, handleUserMedia, handleUserMediaError);
             $scope.btnLabel = 'Share Video';
         }
         else
         {
             getUserMedia(video_constraints, handleUserMedia, handleUserMediaError);
             $scope.btnLabel = 'Share Screen';
         }
    };

【问题讨论】:

    标签: webrtc


    【解决方案1】:

    查看此演示:

    及相关教程:

    只需重新协商双方用户的对等连接!

    【讨论】:

    • 感谢 Muaz,它非常有用。如果我想打开多个流怎么办?我的意思是屏幕共享和视频同时进行。
    • 您需要发出两个唯一的 getUserMedia 请求;每个请求;您需要调用“peer.addStream”......这意味着您正在尝试将两个媒体流添加到单个对等连接......在目标用户端,“onaddstream”事件将根据数量多次触发您附加的流。尝试另一个演示:webrtc-experiment.com/demos/…
    • 当我从音频/视频流切换到屏幕流时。它工作得很好。但是屏幕流不带音频。每当我尝试这样做时,都会出现 PermissionDenied 错误。这个作品'var screen_constraints = {video:{强制:{chromeMediaSource:“screen”}}};'但是这个不起作用'var screen_constraints = {audio:true,video:{强制:{chromeMediaSource:“screen”}}};'为什么会这样?
    • 屏幕上不允许有音频。唯一的解决方法是发出多个 getUserMedia 请求;一种用于仅捕获音频;和一个只捕获屏幕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多