iOS - AVPlayer не может транслировать URL-адрес видео с локального сервера https - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь создать потоковое приложение на iOS.Итак, сначала я попытался использовать http-URL, но он не работал из-за соображений безопасности, как они говорят, поэтому я создал сервер https на Android с помощью NanoHTTPD, и у меня есть доступ к новому серверу https с подключенными к нему устройствами Android и Windows.та же сеть, хотя и с предупреждениями.Теперь я добавил это в свой файл Info.plist

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

Но он все еще остается прежним, и затем я запустил приложение на симуляторе, и логи дали мне это

    2019-09-21 15:40:07.540419+0800 SampleAVPlayerStream[8746:47938] 80: Failed to set processVolumeScalar on device. Error: 560947818
2019-09-21 15:40:07.859455+0800 SampleAVPlayerStream[8746:47938] TIC SSL Trust Error [1:0x6000017fb480]: 3:0
2019-09-21 15:40:07.877511+0800 SampleAVPlayerStream[8746:47938] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
2019-09-21 15:40:07.881312+0800 SampleAVPlayerStream[8746:47938] Task <8F036D25-D6CC-433E-A61E-CD5A844CFAF5>.<1> HTTP load failed (error code: -1202 [3:-9813])
2019-09-21 15:40:07.886919+0800 SampleAVPlayerStream[8746:47938] Task <8F036D25-D6CC-433E-A61E-CD5A844CFAF5>.<1> finished with error - code: -1202
2019-09-21 15:40:07.900192+0800 SampleAVPlayerStream[8746:48024] Task <8F036D25-D6CC-433E-A61E-CD5A844CFAF5>.<1> load failed with error Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “192.168.0.27” which could put your confidential information at risk." UserInfo={NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, NSErrorPeerCertificateChainKey=(
    "<cert(0x7fc32a084600) s: Gus Fakelastname i: Gus Fakelastname>"
), NSErrorClientCertificateStateKey=0, NSErrorFailingURLKey=https://192.168.0.27:8080/Videos/heyheyhey.mp4, NSErrorFailingURLStringKey=https://192.168.0.27:8080/Videos/heyheyhey.mp4, NSUnderlyingError=0x600002c9c4b0 {Error Domain=kCFErrorDomainCFNetwork Code=-1202 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x6000010e8750>, _kCFNetworkCFStreamSSLErrorOriginalValue=-9813, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, kCFStreamPropertySSLPeerCertificates=(
    "<cert(0x7fc32a084600) s: Gus Fakelastname i: Gus Fakelastname>"
)}}, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <8F036D25-D6CC-433E-A61E-CD5A844CFAF5>.<1>"
), _kCFStreamErrorCodeKey=-9813, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <8F036D25-D6CC-433E-A61E-CD5A844CFAF5>.<1>, NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x6000010e8750>, NSLocalizedDescription=The certificate for this server is invalid. You might be connecting to a server that is pretending to be “192.168.0.27” which could put your confidential information at risk.} [-1202]

Обновление: Это журналы, если я верну сервер обратно на http

    2019-09-21 19:12:37.829817+0800 SampleAVPlayerStream[4270:23381] Task <D17E6DB2-73F5-4C8D-92B7-A10B0EECD8BD>.<1> load failed with error Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLStringKey=http://192.168.0.27:8080/Videos/heyheyhey.mp4, NSErrorFailingURLKey=http://192.168.0.27:8080/Videos/heyheyhey.mp4, _NSURLErrorRelatedURLSessionTaskErrorKey=(
    "LocalDataTask <D17E6DB2-73F5-4C8D-92B7-A10B0EECD8BD>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <D17E6DB2-73F5-4C8D-92B7-A10B0EECD8BD>.<1>, NSLocalizedDescription=cancelled} [-999]
2019-09-21 19:12:37.826346+0800 SampleAVPlayerStream[4270:23254] Task <D17E6DB2-73F5-4C8D-92B7-A10B0EECD8BD>.<1> finished with error - code: -999

Вот код Swift.

if let urlVal = NSURL(string: "https://192.168.0.27:8080/Videos/heyheyhey.mp4") {
        let player = AVPlayer(url: urlVal as URL);
        let vc = AVPlayerViewController();
        vc.player = player;

        present(vc, animated: true) {
            vc.player?.play();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...