2015-09-23 25 views
5

Tôi đang thực hiện kết nối ngang hàng giữa WebRTC với cuộc gọi âm thanh bằng cách sử dụng C++.Kết nối ngang hàng với WebRTC

Tôi có hai chủ đề _worker_thread_signaling_thread. Bây giờ khi tôi cố gắng tạo _peerConnectionFactory bằng cách gọi phương thức webrtc::CreatePeerConnectionFactory(), ứng dụng của tôi gặp sự cố. Làm thế nào tôi có thể làm cho nó hoạt động?

_signaling_thread.reset(new rtc::Thread()); 
if(!_signaling_thread->Start()) 
{ 
    printf("_signaling_thread is Failed"); 
    return; 
} 
_worker_thread.reset(new rtc::Thread()); 
if (!_worker_thread->Start()) { 
    printf("_worker_thread is Failed"); 
    return; 
} 

_peerConnectionFactory = webrtc::CreatePeerConnectionFactory(_worker_thread.get(),_signaling_thread.get(),NULL,NULL,NULL); 

Đây là vết lùi Tôi nhận

* thread #15: tid = 0x17e516, 0x00000001008d5674 MyAPP`rtc::MessageQueue::Get(rtc::Message*, int, bool) + 816, stop reason = EXC_BAD_ACCESS (code=1, address=0x100000038)            
* frame #0: 0x00000001008d5674 MyAPP`rtc::MessageQueue::Get(rtc::Message*, int, bool) + 816 
frame #1: 0x00000001008e5fb0 MyAPP`rtc::Thread::ProcessMessages(int) + 100 
frame #2: 0x00000001008e5e44 MyAPP`rtc::Thread::PreRun(void*) + 88 
frame #3: 0x0000000199337b3c libsystem_pthread.dylib`_pthread_body + 156 
frame #4: 0x0000000199337aa0 libsystem_pthread.dylib`_pthread_start + 1 
+0

Không có câu hỏi nào trong bài đăng, nhưng bằng cách nào đó nó đã được upvoted 2 lần. Tôi tự hỏi ai đã upvoting và tại sao. – SergeyA

+0

@SergeyA Tôi cần giải pháp mà tại sao nó không hoạt động đối với tôi, có cách nào giải quyết vấn đề này không? Và những gì người khác cần biết xin vui lòng cho tôi biết. – Aagman

+0

Không rõ cách backtrace liên quan đến mã được đăng. Điều gì xảy ra tại offset 816 từ 'rtc :: MessageQueue :: Get'? Tại sao và khi nào chức năng đó được gọi? Từ dòng 'pthread', tôi đoán điều này đang xảy ra ở một trong các chủ đề nền. Bạn có thể nói được không? –

Trả lời

1

Sau khi xem xét các mẫu PeerConnection nằm bên trong mã nguồn của WebRTC, tôi luôn luôn khởi tạo module SSL trước khi tạo chủ đề như thế này:

bool Core::Init() { 
    rtc::InitializeSSL(); 
    rtc::InitRandom(rtc::Time()); 
    rtc::ThreadManager::Instance()->WrapCurrentThread(); 

    _signalingThread = new rtc::Thread(); 
    _workerThread = new rtc::Thread(); 

    _signalingThread->SetName("signaling_thread", NULL); 
    _workerThread->SetName("worker_thread", NULL); 

    if (!_signalingThread->Start() || !_workerThread->Start()) { 
    return false; 
    } 

    _peerConnectionFactory = 
     webrtc::CreatePeerConnectionFactory(_signalingThread, 
              _workerThread, 
              NULL, NULL, NULL).release(); 

    return true; 
} 
+0

Tại sao bạn gọi 'release()' trên peerConnectionFactory? – Phylliida

Các vấn đề liên quan