Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Quickblox Flatter SDK-正在调用,但视频未流式传输_Flutter_Video_Quickblox_Videocall - Fatal编程技术网

Flutter Quickblox Flatter SDK-正在调用,但视频未流式传输

Flutter Quickblox Flatter SDK-正在调用,但视频未流式传输,flutter,video,quickblox,videocall,Flutter,Video,Quickblox,Videocall,我是一个新手,这已经是几天了,我正在努力使用alpha sdk进行视频通话。我可以打电话,我可以听到音频,但无法播放视频(没有本地视频,也没有远程视频流) 所有权限都是从设置中授予应用的 Android手机到Android模拟器-音频正常,但没有视频 Android手机对Android手机-音频正常,但没有视频 Android手机到IOS模拟器-音频正常,但没有视频 Sdk初始化很好 聊天室正在连接 WebRTC init在调用之前工作正常 我打了个视频电话 startCall(op

我是一个新手,这已经是几天了,我正在努力使用alpha sdk进行视频通话。我可以打电话,我可以听到音频,但无法播放视频(没有本地视频,也没有远程视频流)

所有权限都是从设置中授予应用的

Android手机到Android模拟器-音频正常,但没有视频 Android手机对Android手机-音频正常,但没有视频 Android手机到IOS模拟器-音频正常,但没有视频

  • Sdk初始化很好

  • 聊天室正在连接

  • WebRTC init在调用之前工作正常

  • 我打了个视频电话

      startCall(opponentIds) async{
    
      bool connected = await QB.chat.isConnected();
      print('starting call'+connected.toString());
      int sessionType = QBRTCSessionTypes.VIDEO;
    
      try {
        QBRTCSession session = await QB.webrtc.call(opponentIds, sessionType);
        print('starting call'+session.toString());
        sessionId = session.id;
        play(myQBUserId,opponentIds[0],session.id);
      } on PlatformException catch (e) {
        print('error while initializing call'+e.toString());
      }
    }
    
  • ListenforCall

      _listenForCall() async {
      print('listening for call');
      String eventName = QBRTCEventTypes.CALL;
      try {
        await QB.webrtc.subscribeRTCEvent(eventName, (data) async {
          Map<String, Object> payloadMap = new Map<String, Object>.from(data["payload"]);
          Map<String, Object> sessionMap = new Map<String, Object>.from(payloadMap["session"]);
          String sessionId = sessionMap["id"];
          int initiatorId = sessionMap["initiatorId"];
          int callType = sessionMap["type"];
    
          setState(() {
            this.sessionId = sessionId;
            _incomingCall = true;
          });
          play(myQBUserId,initiatorId,sessionId);
        });
    
        await QB.webrtc.subscribeRTCEvent(QBRTCEventTypes.RECEIVED_VIDEO_TRACK, (data) async {
          Map<String, Object> payloadMap = new Map<String, Object>.from(data["payload"]);
          Map<String, Object> sessionMap = new Map<String, Object>.from(payloadMap["session"]);
          String sessionId = sessionMap["id"];
          int initiatorId = sessionMap["initiatorId"];
          int callType = sessionMap["type"];
    
          print('receiving video even from initiator:'+initiatorId.toString());
    
          this.sessionId = sessionId;
          setState(() {
            _callStarted = true;
          });
    
          await QB.webrtc.enableAudio(sessionId, enable: true);
    
          await QB.webrtc.enableVideo(sessionId, enable: true);
    
        });
    
      } on PlatformException catch (e) {
        print('error while listening for calls'+e.toString());
      }
    }
    
  • 结束通话

      _endCall() async{
      try {
        QBRTCSession session = await QB.webrtc.hangUp(sessionId);
        setState(() {
          _callStarted = false;
          _incomingCall = false;
        });
      } on PlatformException catch (e) {
        // Some error occured, look at the exception message for more details
      }
    }
    
  • 视频通话布局来自-

  _endCall() async{
  try {
    QBRTCSession session = await QB.webrtc.hangUp(sessionId);
    setState(() {
      _callStarted = false;
      _incomingCall = false;
    });
  } on PlatformException catch (e) {
    // Some error occured, look at the exception message for more details
  }
}
    RTCVideoViewController _localVideoViewController;
RTCVideoViewController _remoteVideoViewController;
...
child: new Container(
  margin: new EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0),
  width: 160.0,
  height: 160.0,
  child: RTCVideoView(
    onVideoViewCreated: _onLocalVideoViewCreated,
  ),
  decoration: new BoxDecoration(color: Colors.black54),
)
 
...

child: new Container(
  margin: new EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0),
  width: 160.0,
  height: 160.0,
  child: RTCVideoView(
    onVideoViewCreated: _onRemoteVideoViewCreated,
  ),
  decoration: new BoxDecoration(color: Colors.black54),
)
  
...

void _onLocalVideoViewCreated(RTCVideoViewController controller) {
  _localVideoViewController = controller;
}

void _onRemoteVideoViewCreated(RTCVideoViewController controller) {
  _remoteVideoViewController = controller;
}