标签: webrtc

在Objective C中使用静态init时的好处?

最近我发现了来自Github的webrtc-ios示例.当我浏览项目时,我注意到VideoView类使用静态方法,我不确定是否有必要.VideoView是UIView的子类,它覆盖了两个init方法,initWithFrame:initWithCoder:.我知道覆盖这些init方法然后使用一些方法来设置其他东西是很正常的- (void)setup;.

但是VideoView类使用静态函数static void init(VideoView *self).问题是使用静态函数与普通ObjC方法有什么好处?

VideoView类中的代码如下所示:

-(id)initWithFrame:(CGRect)frame {

     if (self = [super initWithFrame:frame]) {
         init(self);
     }
     return self; 
}

-(id)initWithCoder:(NSCoder *)aDecoder {

     if (self = [super initWithCoder:aDecoder]) {
         init(self);
     }
     return self; 
}

 static void init(VideoView *self) { ... }
Run Code Online (Sandbox Code Playgroud)

objective-c ios webrtc

12
推荐指数
1
解决办法
688
查看次数

无法在Firefox中将HTML5视频标记静音

我想和webrtc进行视频通话.我有两个流,一个是本地的,第二个是远程流.

在Chrome中,我将我的视频标签静音,以便不听到导致回声的声音.我的HTML标签就像;

<video style="position:absolute;right:5px;bottom:5px;display: inline;" class="localVideo" autoplay="autoplay" 
muted="true" 
src="mediastream:3ffffe01-da89-44d9-b9cf-454b11ec6a6a" height="25%" width="25%"></video>
Run Code Online (Sandbox Code Playgroud)

在Firefox中,muted ="true"属性不起作用,所以我听到了自己的声音.我尝试在其他主题中设置多种方式的静音...

var video = document.querySelector("#movie");     
video.muted = true;
Run Code Online (Sandbox Code Playgroud)

这个代码片段与jquery的不同变体没有用.

然后我决定在视频标签中添加controls属性,以便观察Firefox控制按钮的工作原理.我已经看到Firefox控制器上的静音按钮也不起作用.

使用Windows 7 - 8.1,带有Yosemite的macOS的Firefox 35和Firefox ESR 31.5都会出现此问题.我通过webrtc库localStream获取媒体流.

这是一个已知问题,如果有,有什么解决方法可以解决这个问题吗?

谢谢.

javascript firefox html5 html5-video webrtc

12
推荐指数
2
解决办法
5143
查看次数

无法在 Google Chrome 中选择正确的网络摄像头

我无法在 Google Chrome 中选择正确的网络摄像头。Chrome 正确检测到我的网络摄像头,但我无法从列表中选择其中一个,因为它处于禁用状态,Chrome 始终选择 Facetime 高清摄像头,而不是在选项中选择的默认网络摄像头。

截图:https : //tppr.me/WC94p

我测试过的网站:https : //chatruletka.com / https://ruletka.chat

webcam google-chrome webrtc getusermedia

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

WebRTC 的画中画功能

Apple从 14.0 版开始为 iOS引入了 画中画功能,而该功能更早可用于 iPadOS。该功能在使用AVFoundationAPI时工作正常 。例如,

import AVFoundation

func viewDidLoad() {
    let playerController = AVPlayerViewController()
    playerController.allowsPictureInPicturePlayback = true
}

Run Code Online (Sandbox Code Playgroud)

我正在寻找的是,如果有任何解决方案/API 可以为iOS 和 iPadOS 中的WebRTC视频流实现画中画,特别是对于RTCVideoRenderer.

objective-c ios webrtc swift picture-in-picture

12
推荐指数
0
解决办法
567
查看次数

有没有办法知道用户是否接到电话?(Javascript)

我正在开发一个视频通话网络应用程序。

每次用户在移动设备(iPhone 或 Android)上接听电话时,视频通话声音都会受到损害。

我已经尝试过这个tabfocus活动,但并不是每个智能手机在通话过程中都“不专注”。例如,其中一些只是显示一个弹出窗口。

document.visibilityState 也没有用。

我正在寻找一种方法来了解或完全阻止电话。

谢谢您的帮助!

javascript jquery webrtc

12
推荐指数
1
解决办法
125
查看次数

使用Ajax而不是WebSocket进行WebRTC视频聊天:可能吗?

大约六个月前,我能够用PHP成功编写自己的WebSocket服务器脚本.通过这些,我能够在我的本地主机上设置WebRTC视频聊天服务.我很高兴,直到我意识到为了部署它,我需要一个让我可以访问套接字的Web服务器.

不幸的是,没有共享的虚拟主机允许套接字和所有提供套接字的Web服务器都很昂贵.虽然不是大规模的有效解决方案,但为了设置演示以向人们展示,我想将信令方法从WebSocket更改为Ajax,以便我可以展示我制作的WebRTC视频聊天服务.

为此,我一直在努力编写过去几天的代码,但是没有成功让WebRTC对等方捕获彼此的视频.

目前,当一个客户端连接到脚本时,我正在使用Ajax向PHP脚本发送请求,该脚本检查数据库中是否还有其他活动用户.如果没有,则脚本会创建商品,并将商品放入数据库中.之后,客户端每秒轮询一个单独的PHP脚本,以检查连接到该脚本的另一个客户端的答案.

之后,我从另一个客户端连接到该脚本,该客户端查询相同的PHP脚本和DB,然后实现活动用户(第一个连接)已经发布了一个商品,第二个客户端获取并设置了该商品.描述.然后,第二个客户端创建一个答案,该答案放在DB中.

此时,第一个客户端(每秒轮询数据库)检测到答案存在并将该答案设置为第一个客户端的远程描述.不幸的是,即使在成功完成所有这些操作之后,其他客户端的视频也没有弹出.

所以这里是我困惑的地方,有三个(多部分)问题:

1)我认为在两个客户端设置了本地描述然后将该本地描述发送到另一个客户端和接收描述的另一个客户端集作为onaddstream事件应该触发的远程描述,从而允许我显示远程视频.但是,这种情况并没有发生.这在我使用WebSocket之前工作正常,但它与纯Ajax完全不兼容.有什么特别的东西我不见了吗?WebRTC规范在过去六个月中是否发生了根本变化?我曾尝试查看WebRTC规范,但我没有看到任何重大变化.

2)在没有使用Ajax工作的沮丧之后,我回到了我的WebSocket版本并将其加载到我的本地主机上.自从上次使用它以来(我六个月前工作正常),我根本没有更改过代码,但是现在,当我尝试使用它时,有时它会起作用,有时它不起作用.有时我会收到与无法设置本地和/或远程描述相关的错误.怎么了?那些会导致这种情况发生变化的规格有变化吗?与此相关,即使我无法使用Ajax版本弹出远程视频,我也一直在向控制台发出很多东西,而且看起来像是Ajax版本,有时是本地和成功设置了两个客户端的远程描述,有时在尝试设置本地/远程描述时出现错误,即使我每次运行完全相同的脚本而没有任何更改.我正在使用最新版本的Chrome,我开始怀疑它是否存在错误.

3)是否需要onicecandidate事件处理程序来建立连接?我的假设是,对等体可以通过简单的有效提供和回答建立连接,并且onicecandidate事件用于提供备用路由等,这可以导致更好的连接(但不是必需的).我错了吗?如果需要onicecandidate信息,你如何建议我用Ajax作为信令方法来处理它?

我知道这是很多信息和很多问题,但任何人都可以提供的任何信息/见解都将非常感激.在过去的几天里,我一直在敲我的桌子试图解决这个问题,没有任何意义.

php ajax websocket webrtc

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

javascript中有chrome:// webrtc-internals/variables的API吗?

我想访问一些已记录的变量chrome://webrtc-internals/,但我没有在谷歌上找到任何东西 - 甚至没有我能看到的图表的描述.
我特别感兴趣packetsLost,googCurrentDelayMs并且googNacksSent.

为什么我要访问webrtc-internals
我正在编写一个共享视频流的谷歌浏览器应用程序(p2p).它使用peerjs与其他对等体共享流,后者又使用googles webrtc实现.为了使我的应用程序完美,我需要知道何时发生大的延迟.由于我可以看到记录的延迟,chrome://webrtc-internals/我想知道我是否可以通过javascript访问它.

我的猜测是chrome://webrtc-internals/-menu 没有API .

javascript google-chrome webrtc google-chrome-app peerjs

11
推荐指数
1
解决办法
5908
查看次数

如何更改WebRTC中使用的默认编解码器?

我一直在谷歌搜索改变Chrome的WebRTC实现中的编解码器的方法,但似乎没有办法.

如何更改Chrome中WebRTCpeer连接中使用的默认编解码器(音频或视频)?

sdp webrtc

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

QML WebView相机权限

我正在开发具有视频聊天功能的移动应用.我为webrtc找到了一个不错的javascript库,它似乎加载得很好,QWebView但我需要授予它访问摄像头和麦克风的权限,我无法弄清楚如何做到这一点.可能吗?QWebEngineView有一个方便的信号和插槽,但它不支持移动.

所描述的清单权限不工作在这里.

相应的Qt bug:无法通过QML WebView访问摄像头和麦克风

有任何想法吗?

qt android qwebview qml webrtc

11
推荐指数
2
解决办法
836
查看次数

Navigator.MediaDevices.getUserMedia()使用了哪些相机通信标准?

有谁知道用于检测摄像头硬件的通信标准是否与getUserMedia一起使用?

我认为它是MTP或类似的东西,虽然我希望每个浏览器/操作系统的实现都不同,但我已经搜索了两天,我找不到任何有关此问题的可靠信息.

javascript webrtc mediadevices

11
推荐指数
1
解决办法
249
查看次数