序
由于項目需求需要直播的時候連麥.于是就走了一段苦逼路. 按照demo提示的寫法自己寫了好幾遍, 但是每次都是點擊連麥的時候崩潰, 崩潰啊,崩潰. 因為項目的特殊性,老板每次見我就是問 “連麥 搞好了嗎?”. 我應(yīng)該說我比程序還崩潰... 并且我向七牛提供工單的時候, 他們說的意思就是他們也不知道原因,讓我自己查找,找到了好告訴他們, 我.....
(lldb) bt
* thread #35, name = 'sdk_worker_thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xb00000000000002a)
* frame #0: 0x0000000100687d00 XXX`X509_subject_name_cmp + 52
frame #1: 0x000000010066e9f8 XXX `OBJ_bsearch_ex_ + 136
frame #2: 0x0000000101065894 XXX `sk_find + 104
frame #3: 0x000000010106c230 XXX `X509_OBJECT_retrieve_match + 28
frame #4: 0x000000010106c180 XXX `X509_STORE_add_cert + 232
frame #5: 0x0000000100c31d24 XXX `rtc::OpenSSLAdapter::ConfigureTrustedRootCertificates(ssl_ctx_st*) + 140
frame #6: 0x0000000100c30c5c XXX `rtc::OpenSSLAdapter::SetupSSLContext() + 68
frame #7: 0x0000000100c30a3c XXX `rtc::OpenSSLAdapter::BeginSSL() + 156
frame #8: 0x0000000100c31694 XXX `rtc::OpenSSLAdapter::OnConnectEvent(rtc::AsyncSocket*) + 140
frame #9: 0x0000000100c2b6e0 XXX `sigslot::signal1<rtc::AsyncSocket*, sigslot::single_threaded>::operator()(rtc::AsyncSocket*) + 84
frame #10: 0x0000000100c229a8 XXX `rtc::SocketDispatcher::OnEvent(unsigned int, int) + 60
frame #11: 0x0000000100c20ecc XXX `rtc::PhysicalSocketServer::Wait(int, bool) + 872
frame #12: 0x0000000100c1aa8c XXX `rtc::MessageQueue::Get(rtc::Message*, int, bool) + 812
frame #13: 0x0000000100c2e0e0 XXX `rtc::Thread::ProcessMessages(int) + 124
frame #14: 0x0000000100c2dee4 XXX `rtc::Thread::PreRun(void*) + 488
frame #15: 0x000000018aef568c libsystem_pthread.dylib`_pthread_body + 240
frame #16: 0x000000018aef559c libsystem_pthread.dylib`_pthread_start + 284
frame #17: 0x000000018aef2cb4 libsystem_pthread.dylib`thread_start + 4
正文
首先,七牛連麥SDK 一定要從 https://developer.qiniu.com/pili/sdk/1639/PLMediaStreamingKit-RTC 這個網(wǎng)址下載的, 手動導(dǎo)入到程序中.
其次,播放的時如果用 PLPalyerKit 的話, 一定要用 PLPalyerKit.frame, 為什么說一定要用啊.這是才是重點.
防止沖突,
防止沖突,
防止沖突....
什么沖突? .a文件沖突 ! 如果只是嵌入了 PLMediaStreamingKit-RTC 和 PLPalyerKit (不是導(dǎo)入的.frame的動態(tài)庫), 你會發(fā)現(xiàn)有兩個 libcrypto.a 和 兩個 libssl.a, 當你的項目中添加支付寶之后, 你又會驚奇的發(fā)現(xiàn) 現(xiàn)在在是三個 libcrypto.a 和 三個 libssl.a. 對沒錯就是沖突, 果斷的將 PLPalyerKit 換成動態(tài)庫 PLPalyerKit.frame, 保留一個 libcrypto.a 和 一個 libssl.a 再次運行項目.成功.
溫馨提示, 主播連麥最好比 推流 延遲兩秒(否則 容易出現(xiàn)連麥失敗).