相关疑难解决方法(0)

远程VideoStream无法与WebRTC一起使用

编辑:我写了一个详细的教程,解释如何构建一个简单的Videochat应用程序,包括一个信号服务器:

教程:使用HTML和JavaScript创建自己的Videochat应用程序

如果您觉得它有用且易于理解,请告诉我.谢谢!


我试图让Streams通过WebRTC和Websocket(nodejs-server)工作.据我所知,通过SDP的握手工作,并建立了Peerconnection.问题是 - 远程视频没有播放.src-Attribute获取了Blob并设置了自动播放,但它只是不会播放.也许我对ICE候选人做错了(它们用于媒体流,对吧?).有没有办法检查PeerConnection是否设置正确?

编辑:也许我应该解释代码是如何工作的

  1. 在网站加载时建立与websocket-server的连接,创建使用谷歌STUN服务器的PeerConnection,并收集视频和音频流并将其添加到PeerConnection

  2. 当一个用户点击"创建商品"时 - 按钮将包含其会话描述(SDP)的消息发送到服务器(客户端功能sendOffer()),该服务器将其广播给其他用户

  3. 另一个用户获取消息并保存他收到的SDP

  4. 如果用户单击"接受要约",则将SDP添加到RemoteDescription(func createAnswer()),然后将该回复消息(包含应答用户的SDP)发送给产品用户

  5. 在产品用户端执行func offerAccepted(),将其他用户的SDP添加到他的RemoteDesription中.

我不确定在什么时候确切地调用了icecandidate处理程序,但我认为它们应该可以正常工作,因为我在两侧都有两个日志.

这是我的代码(这仅用于测试,所以即使有一个叫做广播的功能,也意味着一次只有2个用户可以在同一个网站上):

index.html的标记:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style>
            #acceptOffer  {
                display: none;
            }
        </style>
    </head>
    <body>
        <h2>Chat</h2>
        <div>
            <textarea class="output" name="" id="" cols="30" rows="10"></textarea>
        </div>
        <button id="createOffer">create Offer</button>
        <button id="acceptOffer">accept Offer</button>

        <h2>My Stream</h2>
        <video id="myStream" autoplay src=""></video>
        <h2>Remote Stream</h2>
        <video id="remoteStream" autoplay src=""></video>

        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script src="websocketClient.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是服务器代码:

"use strict";

var webSocketsServerPort = 61122;

var webSocketServer = require('websocket').server,
http = …
Run Code Online (Sandbox Code Playgroud)

p2p stream websocket stun webrtc

13
推荐指数
1
解决办法
1万
查看次数

webrtc - 视频获得blob,但它仍然是黑色的

我使用chrome 21运行我的webrtc代码.

如果我在同一个chrome中打开两个选项卡,然后打开包含webrtc代码的页面.一个选项卡用于发送视频流; 一个选项卡用于接收视频流它工作正常.

但是,如果我用两个隐身模式或两个不同的Chrome浏览器打开页面,我可以正确获取sdp候选信息.看来视频可以解码信息.

在远程视频中,我只能看到 在此输入图像描述

此外,它似乎崩溃.我试图点击"关闭铬"但没用.

有没有人有类似的问题?

html5 html5-video webrtc

10
推荐指数
1
解决办法
9292
查看次数

peerConnection.addIceCandidate给出错误:无效的字符串

我正在尝试实现仅限语音的WebRTC应用.我在Chrome上运行它Version 29.0.1547.0 dev.我的应用程序使用Socket.IO作为信令机制.

peerConnection.addIceCandidate() 给我这个错误: Uncaught SyntaxError: An invalid or illegal string was specified.

和另外,peerConnection.setRemoteDescription();给我这个错误:Uncaught TypeMismatchError: The type of an object was incompatible with the expected type of the parameter associated to the object.

这是我的代码:

SERVER(在CoffeeScript中)

app = require("express")()
server = require("http").createServer(app).listen(3000)
io = require("socket.io").listen(server)

app.get "/", (req, res) -> res.sendfile("index.html")
app.get "/client.js", (req, res) -> res.sendfile("client.js")

io.sockets.on "connection", (socket) ->
    socket.on "message", (data) ->
        socket.broadcast.emit "message", data
Run Code Online (Sandbox Code Playgroud)

CLIENT(用JavaScript)

var socket = io.connect("http://localhost:3000"); …
Run Code Online (Sandbox Code Playgroud)

html5 websocket node.js socket.io webrtc

5
推荐指数
1
解决办法
4467
查看次数

标签 统计

webrtc ×3

html5 ×2

websocket ×2

html5-video ×1

node.js ×1

p2p ×1

socket.io ×1

stream ×1

stun ×1