我目前正在开发一个使用flutter_webrtc包的应用程序.原来,当我调用WebRTC的getUserMedia方法为Blow时,并没有提示我判断摄像头权限,整个应用程序就卡住了.这种情况在Mac Safari以及iOS Chrome和Safari上都会发生.

var stream = await navigator.mediaDevices.getUserMedia(mediaConstraints);
_localStream = stream;
_localRenderer.srcObject = _localStream;
stream.getTracks().forEach((element) {
  _peerConnection!.addTrack(element, stream); 
});

此代码直接来自官方flutter_webrtc示例:https://github.com/flutter-webrtc/flutter-webrtc/blob/main/example/lib/src/get_user_media_sample.dart.我的flutter_webrtc软件包的版本是0.9.47,Mac safari软件包的版本是17.3,Dart SDK的版本是3.2.3,Flutter软件包的版本是3.16.5.

此外,我还从编译后的Javascript文件main.dart.js中找到了以下代码片段.Flutter似乎调用了一个名为webkitGetUserMedia的特定方法,它似乎适合Safari,但它就是不工作.可能是因为Apple的一些限制.

A.zu.prototype = {
        WO(a, b, c) {
            var s = new A.ay($.ah, t.xN),
                r = new A.bF(s, t.Rt),
                q = A.ar(["audio", b, "video", c], t.N, t.z),
                p = !a.getUserMedia
            p.toString
            if (p)
                a.getUserMedia = a.getUserMedia || a.webkitGetUserMedia || a.mozGetUserMedia || a.msGetUserMedia
            this.a51(a, new A.W_([], []).li(q), new A.a86(r), new A.a87(r))
            return s
        },
        a51(a, b, c, d) {
            return a.getUserMedia(b, A.ji(c, 1), A.ji(d, 1))
        }
}

我非常感谢任何知道这个问题的解决方案的人,这样getUserMedia就可以为iOS设备上的Ffltter Web App工作.

推荐答案

假设你没有HTTPS.getUserMedia API仅支持安全源(HTTPS).您可以将代码部署到安全源,或通过导航至chrome://flags/#unsafely-treat-insecure-origin-as-secure,仅在Chrome中禁用安全源策略以进行测试.更多信息:

  1. https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia

  2. How to access Camera and Microphone in Chrome without HTTPS?

Ios相关问答推荐

SWIFT设备方向更新不正确

如何在SwiftUI ScrollView中zoom 中心项目?

在SwiftUI中为圆角矩形创建均匀分布的点轮廓

围绕对象旋转和移动相机不起作用Swift SceneKit

由于已存在同名项目,因此无法将Mapbox.xcframework-ios.sign复制到Signature中

如何在@AppStorage中存储字体?

为什么这个 init 被分派到一个内部扩展 init?

如何在Collection 后更改并保留按钮 colored颜色 ,然后在 SwiftUI 中切换回来?

在 SwiftUI 中打开 PDF

无法同时满足约束 - 没有适当的约束

在 iOS 中获取设备位置(仅限国家/地区)

如何获取 UICollectionViewCell 的矩形?

以编程方式获取故事板 ID?

UIView 和 initWithFrame 以及一个 NIB 文件.如何加载 NIB 文件?

无法加载从带有标识符的包中的笔尖引用的图像

swift 语言中的 null / nil

有什么方法可以加粗 NSString 的一部分?

在 iOS 上没有显示数字键盘

Xcode 6 进程启动失败:try 启动应用程序超时

如何创建 Select 器数组