AVPlayer没有从服务器播放视频?

时间:2015-11-13 08:15:19

标签: ios objective-c swift avplayer

在我的应用程序中,我从服务器流式传输视频。为此我在Code

下使用了
-(void)playingSong:(NSURL*) url{

   AVAsset *asset = [AVAsset assetWithURL:url];

   duration = asset.duration;

   playerItem = [AVPlayerItem playerItemWithAsset:asset];

   player = [AVPlayer playerWithPlayerItem:playerItem];

   [player play];
}

全部是全局变量

当网络状况良好时播放所有视频,但在网络速度较慢时无法播放大尺寸视频。 意味着它不适合播放大尺寸视频而且播放小视频; 我使用http服务器而不是https;

对于ex:3分钟的视频它正在播放但是对于1小时的视频它没有。 为什么这样?

2 个答案:

答案 0 :(得分:2)

好像你必须先下载整个视频才能开始播放。也可能是因为你的服务器不是AVPlayer。

  

当您使用普通HTTP在网站上投放视频时 - 称为   渐进式下载 - 标题的位置变得非常   重要。标题放在文件的开头或   它位于文件的末尾。如果是后者,你会有   在开始播放之前下载整个内容 - 因为   没有标题,播放器无法开始解码。

如果您的问题是由于视频来源,请查看此guide

查看此thread并相应地更改您的实施。

答案 1 :(得分:0)

在本地下载视频,然后在avplayer中播放。

DispatchQueue.global(qos: .background).async {

        do {

            let data = try Data(contentsOf: url)
            DispatchQueue.main.async {

//                    store "data" in document folder

                let fileUrl = URL(fileURLWithPath: <#localVideoURL#>)

                let asset = AVAsset(url: fileUrl)
                let item = AVPlayerItem(asset: asset)
                let player = AVPlayer(playerItem: item)

                let layer = AVPlayerLayer(player: player)
                layer.bounds = self.view.bounds
                self.view.layer.addSublayer(layer)

                player.play()
            }

        } catch {
            print(error.localizedDescription)
        }
    }