2016-04-05 1 views
0

Я собираюсь создать видео-чат через webRTC, используя React native iOS. Для этого я написал собственный код для iOS. Он просит меня для получения доступа к камере, но после того, что он не может загрузить видео и выбрасывает сообщение потепления,Не удалось связать EAGLDrawable в настройке WebRTC native

Failed to bind EAGLDrawable: <CAEAGLLayer: 0x16d50e30> to GL_RENDERBUFFER 1 
Failed to make complete framebuffer object 8cd6 

Я знаю выше предупреждения из-за не получить вид на камеру для рендеринга кадров видео. Но я не знаю, что случилось с моей реакции код, который не в состоянии дать ему кадр, мой код следующий,

import React, { 
    AppRegistry, 
    Component, 
    StyleSheet, 
    Text, 
    View 
} from 'react-native'; 

var WebRTC = require('react-native-webrtc'); 
var { 
    RTCPeerConnection, 
    RTCMediaStream, 
    RTCIceCandidate, 
    RTCSessionDescription, 
    RTCView 
} = WebRTC; 


var container; 
var configuration = {"iceServers": [{"url": "stun:stun.l.google.com:19302"}]}; 
    var pc = new RTCPeerConnection(configuration); 
    navigator.getUserMedia({ "audio": true, "video": true }, function (stream) { 
    pc.addStream(stream); 
    }); 
    pc.createOffer(function(desc) { 
    pc.setLocalDescription(desc, function() { 
    // Send pc.localDescription to peer 
    }, function(e) {}); 
    }, function(e) {}); 
    pc.onicecandidate = function (event) { 
    // send event.candidate to peer 
}; 

var RCTWebRTCDemo = React.createClass({ 
    getInitialState: function() { 
    return {videoURL: null}; 
    }, 
    componentDidMount: function() { 
    container = this; 
    }, 
    render: function() { 
    return (
     <View style={styles.container}> 
     <RTCView streamURL={this.state.videoURL}/> 
     </View> 
    ); 
    } 
}); 

const styles = StyleSheet.create({ 
    container: { 
    flex: 1, 
    justifyContent: 'center', 
    alignItems: 'center', 
    backgroundColor: '#F5FCFF', 
    }, 
    welcome: { 
    fontSize: 20, 
    textAlign: 'center', 
    margin: 10, 
    }, 
    instructions: { 
    textAlign: 'center', 
    color: '#333333', 
    marginBottom: 5, 
    }, 
}); 

AppRegistry.registerComponent('RCTWebRTCDemo',() => RCTWebRTCDemo); 

Мне интересно знать, где я ошибаюсь?

+0

Возможно, вы измените 'create pc' и' getUserMedia' в 'ComponentDidMount()'? – zxcpoiu

+0

и как кто-то сказал на репо, вы установили высоту и ширину с помощью RTCView? – zxcpoiu

+0

@zxcpoiu Спасибо .. я решил эту проблему. Правильный кадр был неправильно установлен в RTCView. – Tirth

ответ

2

Я установил фрейм перед

<View style={styles.container}> 
     <RTCView streamURL={this.state.videoURL}/> 
</View> 

, но его не так. Создание RTCView несколько отличается, поэтому мы устанавливаем кадр внутри синтаксиса RTCView. Правильный способ:

 <View> 
     <RTCView streamURL={this.state.videoURL} style={styles.container}/> 
     </View>