Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >来自Safari iPhone的Twilio远程视频在Angular 5中显示黑屏

来自Safari iPhone的Twilio远程视频在Angular 5中显示黑屏
EN

Stack Overflow用户
提问于 2020-04-14 19:16:23
回答 3查看 1.3K关注 0票数 0

iPhone safari版本: 11.2.5

Chrome版本:检查更新版本80.0.3987.163 (官方版本)(64位)

该连接是对等连接。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
If I can give you an overview it's like -

Video is coming on iPhone from mac safari, Chrome, window laptop
Video is coming on Android Phone from mac safari, Chrome, window laptop
Video is coming on mac safari, Chrome, window laptop from Android Phone

Video is NOT COMING on mac safari, Chrome, window laptop from iPhone

如果你能帮上忙,请告诉我。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-16 21:08:47

我解决了这个问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
createLocalVideoTrack({
      video: { width: 1280, height: 720 },
    }).then(track => {
      if (this.localVideo) {
        const element = track.attach();
        this.renderer.data.id = track.sid;
        this.renderer.setStyle(element, 'width', '25%');
        this.renderer.appendChild(this.localVideo.nativeElement, element);
        this.attachVideoClass();
      }
    });

应该是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   this.roomObj.localParticipant.videoTracks.forEach(publication => {
      const element = publication.track.attach();
      this.renderer.data.id = publication.track.sid;
      this.renderer.setStyle(element, 'width', '25%');
      this.renderer.appendChild(this.localVideo.nativeElement, element);
    })
票数 3
EN

Stack Overflow用户

发布于 2020-04-15 07:14:48

Twilio开发者的布道者在这里。

我建议您通读一下developing for Safari 11 article,它会检查一堆潜在的问题。

票数 0
EN

Stack Overflow用户

发布于 2020-04-16 10:43:46

请检查代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { Injectable, EventEmitter, ElementRef, Renderer2, RendererFactory2 } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Observer } from 'rxjs';
import { connect, createLocalTracks, createLocalVideoTrack } from 'twilio-video';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Http } from '@angular/http';
import { Router } from '@angular/router';
import { BaCustomPreLoader } from './baCustomPreloader.service';


@Injectable()
export class TwilioService {

  remoteVideo: ElementRef;
  localVideo: ElementRef;
  previewing: boolean;
  msgSubject = new BehaviorSubject("");
  roomObj: any;

  roomParticipants;

  private renderer: Renderer2;
  constructor(
    private http: Http,
    private router: Router,
    private rendererFactory: RendererFactory2,
    private baCustomPreLoader: BaCustomPreLoader) {
    this.renderer = rendererFactory.createRenderer(null, null);
  }

  getToken(username): Observable<any> {
    return this.http.post('/abc', { uid: 'ashish' });
  }

  microphone = true;

  mute() {
    this.roomObj.localParticipant.audioTracks.forEach(function (
      audioTrack
    ) {
      audioTrack.track.disable();
    });
    this.microphone = false;
  }


  unmute() {
    this.roomObj.localParticipant.audioTracks.forEach(function (
      audioTrack,
      key,
      map
    ) {
      audioTrack.track.enable();
    });
    this.microphone = true;
  }


  connectToRoom(accessToken: string, options): void {
    connect(accessToken, options).then(room => {
      this.roomObj = room;

      if (!this.previewing && options['video']) {
        this.startLocalVideo();
        this.previewing = true;
      }

      this.roomParticipants = room.participants;
      room.participants.forEach(participant => {
        this.attachParticipantTracks(participant);
      });

      room.on('participantDisconnected', (participant) => {
        this.detachParticipantTracks(participant);
      });

      room.on('participantConnected', (participant) => {
        this.roomParticipants = room.participants;
        this.attachParticipantTracks(participant);

        participant.on('trackAdded', track => {

          const element = track.attach();
          this.renderer.data.id = track.sid;
          this.renderer.setStyle(element, 'height', '100%');
          this.renderer.setStyle(element, 'max-width', '100%');
          this.renderer.appendChild(this.remoteVideo.nativeElement, element);
          this.attachVideoClass();
          this.baCustomPreLoader.hide();
        });
      });

      // When a Participant adds a Track, attach it to the DOM.
      room.on('trackAdded', (track, participant) => {
        this.attachTracks([track]);
      });

      // When a Participant removes a Track, detach it from the DOM.
      room.on('trackRemoved', (track, participant) => {
        this.detachTracks([track]);
      });

      room.once('disconnected', room => {
        room.localParticipant.tracks.forEach(track => {
          track.track.stop();
          const attachedElements = track.track.detach();
          attachedElements.forEach(element => element.remove());
          room.localParticipant.videoTracks.forEach(video => {
            const trackConst = [video][0].track;
            trackConst.stop();  // <- error

            trackConst.detach().forEach(element => element.remove());

            room.localParticipant.unpublishTrack(trackConst);
          });



          let element = this.remoteVideo.nativeElement;
          while (element.firstChild) {
            element.removeChild(element.firstChild);
          }
          let localElement = this.localVideo.nativeElement;
          while (localElement.firstChild) {
            localElement.removeChild(localElement.firstChild);
          }
          this.router.navigate(['thanks']);
          setTimeout(() => {
            window.location.reload();
          }, 1000)
        });

      });
    }, (error) => {
      alert(error.message);
    });
  }

  attachParticipantTracks(participant): void {
    participant.tracks.forEach(part => {
      this.trackPublished(part);
    });
  }

  trackPublished(publication) {
    if (publication.isSubscribed)
      this.attachTracks(publication.track);

    if (!publication.isSubscribed)
      publication.on('subscribed', track => {
        this.attachTracks(track);
      });
  }

  attachTracks(tracks) {

    const element = tracks.attach();
    this.renderer.data.id = tracks.sid;
    this.renderer.setStyle(element, 'height', '100%');
    this.renderer.setStyle(element, 'max-width', '100%');
    this.renderer.appendChild(this.remoteVideo.nativeElement, element);
    this.attachVideoClass();
    this.baCustomPreLoader.hide();
  }

  startLocalVideo(): void {
    createLocalVideoTrack({
      video: { width: 1280, height: 720 },
    }).then(track => {
      if (this.localVideo) {
        const element = track.attach();
        this.renderer.data.id = track.sid;
        this.renderer.setStyle(element, 'width', '25%');
        this.renderer.appendChild(this.localVideo.nativeElement, element);
        this.attachVideoClass();
      }
    });
  }

  detachParticipantTracks(participant) {
    this.detachTracks(participant);
  }

  detachTracks(tracks): void {
    tracks.tracks.forEach(track => {
      let element = this.remoteVideo.nativeElement;
      while (element.firstChild) {
        element.removeChild(element.firstChild);
      }
    });
  }

  attachVideoClass() {
    let remote = document.getElementById('remote');
  }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61215466

复制
相关文章
[Spring Boot]Safari(iPhone系浏览器)相关无法播放视频
近期在存储服务。遇到了一个棘手的问题,电脑端,包括了Android的浏览器,应用都能正常的播放上传的mp4应用,但是链接一到苹果上就有问题了。
用户2353021
2021/03/04
2.2K0
[Spring Boot]Safari(iPhone系浏览器)相关无法播放视频
EasyNVR查看直播视频流显示黑屏原因排查
我们经常会遇到碰到视频流播放不出来的情况,在之前我们也排查过很多类似问题,其中有部分问题是H.265编码格式的原因,但有些情况却需要我们进一步排查。
EasyNVR
2021/12/23
6830
EasyNVR查看直播视频流显示黑屏原因排查
EasyNVR查看直播视频流显示黑屏原因排查
我们经常会遇到碰到视频流播放不出来的情况,在之前我们也排查过很多类似问题,其中有部分问题是H.265编码格式的原因,但有些情况却需要我们进一步排查。
TSINGSEE青犀视频
2021/12/16
3600
使用Safari或者Chrome远程调试IOS Safari中的页面
【转载请注明出处】:https://blog.csdn.net/huahao1989/article/details/108020899
后端老鸟
2020/08/15
22.9K0
使用Safari或者Chrome远程调试IOS Safari中的页面
iPhone Safari 下载企业包出现 apk
有人反馈企业包下载链接,使用 iPhone Safari 打开后出现下载 apk 的提示
莫空9081
2021/11/24
1.2K0
关于iPhone黑屏无法开机的修复方案
获取iTunes 下载iTunes 根据软件提示安装,安装完成如下图所示 同时按住电源键+Home键,手动将iPhone切换至Recovery模式,如果是iPhone 7改为电源键+负音量按键即可,
用户1456517
2019/10/17
2.2K0
Ubuntu20.04 虚拟显示器配置(解决无显示器远程黑屏问题)
一、配置方法 1)安装软件 通过终端安装虚拟显示器软件,Ubuntu20.4可以用:
全栈程序员站长
2022/09/24
6K0
记录一次 Safari 调试 iPhone Web Page
话说,前些日子一直处理集团官网开发中,前几日接到测试反馈,移动端某个页面兼容性有问题。
贺biubiu
2019/09/17
1.7K0
记录一次 Safari 调试 iPhone Web Page
开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
近些天,有网友的电脑出现:开机后屏幕一片漆黑,但屏幕中央显示有鼠标指针,并且可移动。按键盘上的不论什么键都没有反应,鼠标也仅可移动,单、双击都无效。说得简单点儿,就是电脑黑屏,仅仅显示鼠标。
全栈程序员站长
2021/12/05
4.8K0
开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
Angular 2 数据显示
以下代码基于 Angular 2 TypeScript 环境配置 来创建,你可以在该章节上下载源码,并修改以下提到的几个文件。
陈不成i
2021/07/26
2.4K0
Angular 显示英雄列表
在本页面,你将扩展《英雄指南》应用,让它显示一个英雄列表, 并允许用户选择一个英雄,查看该英雄的详细信息。
HoneyMoose
2019/05/30
4.4K0
Angular 显示英雄列表
在本页面,你将扩展《英雄指南》应用,让它显示一个英雄列表, 并允许用户选择一个英雄,查看该英雄的详细信息。
HoneyMoose
2019/05/30
4K0
WebRTC网页远程视频会议系统EasyRTC在新版Chrome浏览器87及部分版本黑屏问题优化
去年年初,TSINGSEE青犀视频平台对基于webrtc开发的网页视频会议系统EasyRTC做了版本上的区分,分别是MCU版本和SFU版本,但在今年,随着谷歌浏览器的升级,EasyRTC 的 MCU 版本出现在部分谷歌浏览器,以及最新版的谷歌浏览器进入会议室黑屏无法使用的问题。
TSINGSEE青犀视频
2021/03/02
7320
RTSP协议视频拉流播放平台EasyNVR查看视频显示“加载中”并黑屏如何解决?
TSINGSEE团队研发的RTSP协议视频平台EasyNVR通过获取数字网络摄像机视频流完成音视频的采集,然后由EasyNVR内部实现流媒体协议转换、转码和流媒体分发工作,最终可以分发出RTMP、HTTP-FLV和HLS流,同时也实现在线播放。
EasyNVR
2020/08/11
1.3K0
RTSP协议视频拉流播放平台EasyNVR查看视频显示“加载中”并黑屏如何解决?
微软远程桌面黑屏的元凶究竟是谁?
某客户戴尔R730服务器,操作系统为Windows Server 2012,ERP公司的技术人员在运维过程中,经常向我司技术人员反馈:微软自带远程桌面,在输入用户名和密码之后黑屏,无法登录进入桌面,我司技术人员通过anydesk工具发现可以远程操作服务器,但是速度非常,点一下鼠标需要等10秒甚至30秒才有响应,直接远程重启服务器后正常,但是第二天又会黑屏。。。
IT狂人日志
2022/05/18
2.7K0
微软远程桌面黑屏的元凶究竟是谁?
应用|iPhone上的这个来自Mac的照片怎么删?
有这个回答的原因是之前发现自己的iPhone上多出来了一个相册,名字为“来自我的Mac”。
琉璃康康
2022/04/19
14.7K0
应用|iPhone上的这个来自Mac的照片怎么删?
远程监控摄像头在流媒体服务器显示无视频信号?
在显示器正常的情况下,远程监控摄像机在流媒体服务器画面显示“无网络视频”,通常是由于摄像机的供电异常、网线不通、密码设置、IP地址冲突等四点问题造成的。
EasyNVR
2020/04/23
1.6K0
远程监控摄像头在流媒体服务器显示无视频信号?
点击加载更多

相似问题

远程视频在WebRTC中显示为黑屏或空白

3325

Twilio远程视频不可见

219

获取远程视频的黑屏幕: WebRTC

12

无法在Twilio中获取远程视频音轨

10

Youtube视频在iPhone上停止工作-黑屏

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文