代码之家  ›  专栏  ›  技术社区  ›  Roman Podymov

当nsallowsArrayLoadsInWebContent为true时,无法使用avplayer播放视频

  •  2
  • Roman Podymov  · 技术社区  · 6 年前

    我有一个非常小的申请 AVPlayer . 我正在使用以下代码播放视频:

    if let urlToPlay = URL(string: "http://some_video.m3u8") {
    
        self.player = AVPlayer.init(url: urlToPlay)
        self.player!.play()
    }
    

    我还在文件“info.plist”中添加了一些行,以便能够使用HTTP模式播放视频:

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

    而且效果很好。但后来我发现了一面旗子 NSAllowsArbitraryLoadsInWebContent . 我没有 WKWebView UIWebView 我的应用程序中的实例,所以我认为使用此标志不会导致应用程序中的任何崩溃或错误。现在我的文件“info.plist”有以下片段:

    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
    </dict>
    

    玩家不工作。有人能解释一下为什么会这样吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   HAK    6 年前

    对于通过AvFoundation加载媒体,请添加密钥 NSAllowsArbitraryLoadsForMedia 把它设为真。

    根据文件:

    在iOS 10及更高版本以及MacOS 10.12及更高版本中,此密钥的值 被忽略,导致此键的有效值为其默认值 如果您的应用程序中存在以下任何一个键,则值为no_ info.plist文件:

    不允许使用双箭头或双箭头媒体, 不允许出现位raryloadinebcontent, 不允许网络连接

    请注意,在生产环境中不鼓励设置任意负载,这些标志会触发AppStore审查,并需要这样做的理由。

    如需进一步阅读,请访问 ATS Documentation

        2
  •  0
  •   Saikrishna Kumbhoji    6 年前
    Also Create a AVPlayerViewController object to play the Video.
    
     let video = AVPlayer(url: URL(fileURLWithPath:path))
     let videoPlayer = AVPlayerViewController()
     videoPlayer.player = video
     present(videoPlayer, animated:true, completion: {
            video.play()
       })
    
    Hope this will helps for you.