0

我在反应本机应用程序中使用 webrtc 进行视频通话。
如果我打电话给其他人并且接收者收到呼叫,那么我会收到接收者流,但接收者端存在问题。
接收器获取远程流,但它显示空白视图。

import AsyncStorage from '@react-native-async-storage/async-storage';
import {
  RTCIceCandidate,
  RTCPeerConnection,
  RTCSessionDescription,
} from 'react-native-webrtc';
import io from '../scripts/socket.io';
const PC_CONFIG = {
  iceServers: [
    { url: 'stun:motac85002'},
  ],
};
export const pc = new RTCPeerConnection(PC_CONFIG);
// Signaling methods
export const onData = data => {
  handleSignalingData(data.data);
};
const ENDPOINT = 'http://52.52.75.250:3000/';
const socket = io(ENDPOINT);
//  const PeerConnection = () => {
const sendData = async data => {
  const roomId = await AsyncStorage.getItem('roomId');
  const userId = parseInt(await AsyncStorage.getItem('user_id'));
  socket.emit('data', roomId, userId, data);
};
export const createPeerConnection = async(stream, setUsers) => {
  try {
    pc.onicecandidate = onIceCandidate;
    const userId = parseInt(await AsyncStorage.getItem('user_id'));
    pc.onaddstream = e => {
      setUsers(e.stream);
    };
    pc.addStream(stream)
    console.log('PeerConnection created',      userId);
    // sendOffer();
  } catch (error) {
    console.error('PeerConnection failed: ', error);
  }
};
export const callSomeone = () => {
  pc.createOffer({}).then(setAndSendLocalDescription, error => {
    console.error('Send offer failed: ', error);
  });
};
const setAndSendLocalDescription = sessionDescription => {
  pc.setLocalDescription(sessionDescription);
  sendData(sessionDescription);
};
const onIceCandidate = event => {
  if (event.candidate) {
    sendData({
      type: 'candidate',
      candidate: event.candidate,
    });
  }
};
export const disconnectPeer = () =>{
  pc.close();
}
const sendAnswer = () => {
  pc.createAnswer().then(setAndSendLocalDescription, error => {
    console.error('Send answer failed: ', error);
  });
};
export const handleSignalingData = data => {
  switch (data.type) {
    case 'offer':
      pc.setRemoteDescription(new RTCSessionDescription(data));
      sendAnswer();
      break;
    case 'answer':
      pc.setRemoteDescription(new RTCSessionDescription(data));
      break;
    case 'candidate':
      pc.addIceCandidate(new RTCIceCandidate(data.candidate));
      break;
  }
};
// }
// export default PeerConnection

谁能告诉我为什么在接收端视频流没有显示?
摩托罗拉设备中也存在 remoteStream 问题。为什么会这样?

4

0 回答 0