标签: webrtc

如何使getUserMedia()适用于所有浏览器

我了解了web-rtc,它说你可以捕获视频摄像头,我使用了演示,这只适用于镀铬..

当我在firefox上打开它"getUserMedia() not supported in your browser." 时,当我打开这个HTML5-rocks-demo时,我会在另一只手上收到消息

它100%工作.什么改变或插件或我想念的东西让我的getusermedia()工作.

javascript html5 html5-video webrtc

21
推荐指数
4
解决办法
7万
查看次数

WebRTC - 我需要指定多少个STUN/TURN服务器?

我遇到的麻烦NAT traversalWebRTC.视频流可以与某些人合作,但与在学生宿舍路由器后面的人不同.

我认为这应该通过使用TURN服务器来解决.我已经这样做了,它仍然无法工作,现在我想知道TURN服务器是否正常工作.因此,我想知道我是否可以或应该设置多个TURN服务器,如果是,如何.

在另一个线程中找到了这个STUN/TURN服务器列表.现在我正在设置它们

var STUN = {
    'url': 'stun:stun.l.google.com:19302',
};

var TURN = {
    url: 'turn:homeo@turn.bistri.com:80',
    credential: 'homeo'
};

var iceServers = 
{
    iceServers: [STUN, TURN]
};

var pc = new RTCPeerConnection(iceServers);
Run Code Online (Sandbox Code Playgroud)

所以我的问题基本上是:是否可以设置几个STUN/TURN服务器?如果可能,我应该这样做,那代码会是什么样的?

javascript stun webrtc

21
推荐指数
3
解决办法
2万
查看次数

如何在手机浏览器无效标签中保持WebRTC dataChannel打开?

我正在制作一个使用WebRTC的Web应用程序.它适用于桌面浏览器.但是,在小型智能手机网络浏览器上,有不需要的事件:

当在Android的移动网络浏览器chrome和forfox的firefox上切换标签时,使用.createDataChannel关闭创建一个开放的webrtc数据通道.该dataChannel.onclose事件处理程序被触发.如何防止数据通道关闭?如果不可能,是否可以在不重新启动整个信令阶段的情况下重新打开数据通道?

浏览文件时也会发生这种情况 <input type="file">

我浏览计算器了一下,发现有被砍掉其他东西/在活动标签页就像放缓requestTimeOutsetInterval.

是否需要任何自动化以强制它在后台保持打开状态.

javascript html5 mobile-website webrtc

21
推荐指数
1
解决办法
889
查看次数

如何从主机上的Chromium和docker容器中的Chromium共享来自/ dev/videoX设备的WebRTC流

环境

  • 主机运行Ubuntu 14.04.5 LTS
  • Docker版本17.09.0-ce,构建afdb6d4
  • 铬62.0.3202.89
  • 2个摄像头:/dev/video0,/dev/video1

相机

# v4l2-ctl --list-devices
Venus USB2.0 Camera (usb-0000:00:1a.0-1.2.2):
    /dev/video1

USB 2.0 Camera (usb-0000:00:1a.0-1.3):
    /dev/video0
Run Code Online (Sandbox Code Playgroud)

我需要将Ubuntu 14.04 主机上的网络摄像头共享到Ubuntu 16.04 docker容器,并且能够getUserMedia从主机和容器上运行的每个铬实例上的每个摄像头或两个独立的docker容器上获取视频流(WebRTC ).

为了测试getUserMedia,我正在浏览


如何重现

Dockerfile

FROM ubuntu:16.04

# Install chromium
RUN apt-get update \
    && apt-get install sudo chromium-browser alsa-base alsa-utils alsa-oss -y \
    && rm -rf /var/lib/apt/lists/*

# Create a normal user to run chromium as
RUN useradd --create-home browser …
Run Code Online (Sandbox Code Playgroud)

chromium webrtc docker ubuntu-14.04 dockerfile

21
推荐指数
1
解决办法
989
查看次数

如何为webrtc选择输入视频设备?

我正在学习webRTC申请.

我的参考是这个软件

apprtc https://code.google.com/p/webrtc/source/browse/trunk/samples/js/apprtc/

演示 https://apprtc.appspot.com/

我的电脑有bult-in视频设备,apprtc使用这个视频设备.不过我想用USB摄像机代替.

我正在寻找改变输入视频设备的方法.但我在源文件中找不到任何线索.

有没有人有信息?

webrtc

20
推荐指数
2
解决办法
4万
查看次数

Chrome始终允许网络摄像头通过http

我正在使用webrtc视频构建一个自助服务终端应用程序.它只在内部网络上提供,我希望能够始终通过http允许我的网站的网络摄像头.使用ssl并不重要,只是证书的额外费用.

有没有办法做到这一点,还是我被卡住了?

webcam google-chrome kiosk-mode webrtc

20
推荐指数
3
解决办法
2万
查看次数

使用ASP.NET MVC处理/接收来自WebRTC的实时视频网络摄像头流或任何基于浏览器的捕获机制到服务器

我们需要从WebRTC(或客户端网络摄像头的任何其他捕获机制)捕获实时视频流,即使它不是在所有浏览器上都支持,而是作为PoC支持.

这个实时视频需要由服务器组件(ASP.Net MVC/Web API)处理,我想服务器上的代码看起来像:

[HttpPost]
public ActionResult HandleVideoStream(Stream videoStream)
{
      //Handle the live stream
}
Run Code Online (Sandbox Code Playgroud)

寻找任何关键字或有用的链接.

我们已经实现了一种使用base64 jpg发送单个帧的方法,但这根本没用,因为base64编码有很大的开销,因为我们可以使用任何视频编码来更有效地发送视频(发送差异)在使用VPx -vp8-的帧之间,所需的解决方案需要从客户端的网络摄像头捕获视频并将其作为流 - 或数据块实时(未记录)发送到服务器(asp.net)代表新的视频数据.

c# asp.net asp.net-mvc webrtc asp.net-web-api

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

WebRTC用于实时扩展

我正在为1通道中的许多用户寻找实时扩展的廉价解决方案.

我正在使用sockjs,但在谈论非常大的数字时缩放非常烦人.

我正在考虑使用webrtc来降低p2p的成本.它不是连接到所有用户的服务器,而是仅连接到有限数量的用户,然后用户通过webrtc将他们的数据分发到p2p网络.这是明智的吗?什么是最简单的实施方式?

该信息不是私密的,几秒钟<5秒的延迟是可以接受的.

javascript webrtc

19
推荐指数
1
解决办法
2276
查看次数

navigator.mediaDevices.getUserMedia不起作用,webkitGetUserMedia也没有

我一直在使用webkitGetUserMedia方法(getUserMedia通过adapter.js)在我的网络应用程序上为webRTC获取相机nad microhpone.我的服务器不安全(没有SSL证书).一切正常,直到我开始收到错误说:"getUserMedia()不再适用于不安全的起源.要使用此功能,您应该考虑将应用程序切换到安全的来源,例如HTTPS.请参阅https:// goo. gl/rStTGz了解更多详情."

我用谷歌搜索,我看到现在在Chrome中我需要使用navigator.mediaDevices.getUserMedia().我使用的是Chrome 47.0.2526.80 m,在此页面上https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia,它表示此版本应该支持此方法.但是,当我调用navigator.mediaDevices.getUserMedia时,我得到了未定义.所以现在我不能在Chrome中使用任何一种方法.

任何人都可以帮我解决这个问题.谢谢

javascript ssl google-chrome html5-video webrtc

19
推荐指数
4
解决办法
5万
查看次数

桌面复制(DirectX)屏幕捕获无法提供屏幕更新

我正在开发一个应用程序,它将通过桌面复制API(使用DirectX 11)捕获屏幕(仅对前一个屏幕更新的差异)并在另一个窗口上呈现它(查看器可能在通过LAN连接的另一台机器上运行) .该代码是MSDN中提供的示例的改进版本.一切正常,除了设备没有给出任何屏幕更新,虽然在中间有一次,大约10%的时间在一些机器上发生(大多数在Windows 8/8.1机器上,很少在Windows 10机器上).我尝试了所有可能的方法来解决这个问题.减少了设备重置的次数,这为我提供了一些可靠的输出,但并不总能正常工作100%.

设备有时无法提供初始屏幕(全屏)(这种情况在所有支持桌面复制的Windows操作系统上有60%的时间发生),我想出了一个可以重新进行初步更新的工作.设备,直到它提供一个,但也导致多个问题,设备可能甚至不提供初始屏幕.

我已经投入了数周的时间来解决这个问题,但没有找到合适的解决方案,而且我所知道的论坛没有讨论这些问题.任何帮助,将不胜感激.

下面是我的代码,以获得前一个屏幕差异,初始化设备,填充适配器和监视器.

请耐心等待一段很长的代码片段,在此先感谢.

要获取屏幕更新:

INT getChangedRegions(int timeout, rectangles &dirtyRects, std::vector <MOVE_RECT> &moveRects, UINT &rect_count, RECT ScreenRect)
{
UINT diffArea           = 0;
FRAME_DATA currentFrameData;

bool isTimeOut          = false;

TRY
{

    m_LastErrorCode = m_DuplicationManager.GetFrame(&currentFrameData, timeout, &isTimeOut);

    if(SUCCEEDED(m_LastErrorCode) && (!isTimeOut))
    {
        if(currentFrameData.FrameInfo.TotalMetadataBufferSize)
        {

            m_CurrentFrameTexture = currentFrameData.Frame;

            if(currentFrameData.MoveCount)
            {
                DXGI_OUTDUPL_MOVE_RECT* moveRectArray = reinterpret_cast<DXGI_OUTDUPL_MOVE_RECT*> (currentFrameData.MetaData);

                if (moveRectArray)
                {
                    for(UINT index = 0; index < currentFrameData.MoveCount; index++)
                    {
                        //WebRTC
                        // DirectX capturer API may randomly return unmoved move_rects, …
Run Code Online (Sandbox Code Playgroud)

directx-11 visual-c++ dxgi webrtc desktop-duplication

18
推荐指数
1
解决办法
1453
查看次数