HLS视频无法在模拟器和真实设备上播放

时间:2018-10-26 08:31:51

标签: ios swift xcode avplayer hls

我正在使用一个iOS应用程序,该应用程序仅播放实时流HLS视频。

我的问题是我已经使用AVPlayer和视图控制器设置了Playground,启动视图控制器时一切正常,播放器也已启动,但流媒体未启动。该流是.m3u8类型,在Safari和Chrome浏览器中效果非常好。 iOS不会在模拟器或真实设备上向我显示视频。

我也搜索了其他SO解决方案,但是它们都不对我有用。

ModelA

2 个答案:

答案 0 :(得分:0)

我使用的HTTP URL不安全,因此不允许设备或模拟器播放它。我放了一个例外,允许不安全的协议让iOS平稳地传输HLS。

 <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <true/>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <key>NSIncludesSubdomains</key>
        <true/>
    </dict>

enter image description here

答案 1 :(得分:0)

在我遇到相同问题的情况下,被接受的答案似乎并不正确,并添加了ATS特定的所有任意负载配置来完成工作。

我尝试了所有方法之后,解决的方法是,如果该URL是从“ http”开始的,则ATS会很容易地停止该URL,因此,如果我们使用的是非安全的“ http” URL,则将该URL中的http替换为https为我。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>some.url.to.com.countrycode</key>
        <dict>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

迅速:

let httpsurl = httpURLString.stringByReplacingOccurrencesOfString("http", withString: "https")

Obj-C:

NSString *httpsurl = [httpURLString stringByReplacingOccurrencesOfString:@“http” withString:@“https”];