Ios AVPlayer和AWS服务流媒体

Ios AVPlayer和AWS服务流媒体,ios,swift,amazon-web-services,amazon-s3,avplayer,Ios,Swift,Amazon Web Services,Amazon S3,Avplayer,我正在尝试从AWS S3 bucket流式传输视频。 我上传了几个具有“为每个人制作”权限的文件 我还创建了一个CloudFront发行版(我只是选择了我的bucket,默认情况下让所有其他人选择)。 在网络浏览器中,我可以下载文件/读取地址 在我的项目中,我启动了一个AVPlayer,它从tableview中获取路径(就像iTunes,但用于电影)。 每行的文件与在“我的web浏览器”中测试的文件相同: 第1排 第2行的distribution.cloudfront.net/movie2.mo

我正在尝试从AWS S3 bucket流式传输视频。 我上传了几个具有“为每个人制作”权限的文件

我还创建了一个CloudFront发行版(我只是选择了我的bucket,默认情况下让所有其他人选择)。 在网络浏览器中,我可以下载文件/读取地址

在我的项目中,我启动了一个AVPlayer,它从tableview中获取路径(就像iTunes,但用于电影)。 每行的文件与在“我的web浏览器”中测试的文件相同: 第1排 第2行的distribution.cloudfront.net/movie2.mov

球员很好地选择了这条路并开始比赛,但它总是在同一时间冻结。我必须暂停或前进/后退才能继续视频

因此,这似乎是一个缓冲区问题

我想知道我是否使用AWS Cloud Front,以及如何解决缓冲区问题

我没有找到任何关于这方面的好教程或答案

谢谢你的帮助


关于

您是否在cloudfront上设置了地理限制,以便它使用离您最近的区域中的服务器

在我的第一个评论中,我的意思是在web和RMTP之间。你想要一个正确的网站

现在它仅限于法国,请再次测试您的视频,看看它们的性能是否更好

随着使用的扩展,您将希望允许其他区域。记住,不同地区的cloudfront价格不同。欧盟和美国是一样的,但其他地区的价格可能是美国的两倍或更高


播放长视频时,AVPlayer可能会暂停播放

您需要注册Playbackufference和playbackLikelyToKeepUp键的观察者

[playerItem addObserver:self forKeyPath:@"playbackBufferEmpty" options:NSKeyValueObservingOptionNew context:nil];
[playerItem addObserver:self forKeyPath:@"playbackLikelyToKeepUp" options:NSKeyValueObservingOptionNew context:nil];
然后呢,

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
                        change:(NSDictionary *)change context:(void *)context {
    if (!player)  {
        return;
    }

    else if (object == playerItem && [keyPath isEqualToString:@"playbackBufferEmpty"])  {
        if (playerItem.playbackBufferEmpty) {
            //Other relevant code here, like adding spinner
        }
    }

    else if (object == playerItem && [keyPath isEqualToString:@"playbackLikelyToKeepUp"])  {
        if (playerItem.playbackLikelyToKeepUp)  {
            [player play];
            //Other relevant code here, like removing spinner
        }
    }
}

Cloudfront具有分发设置,如果文件用于“下载”或“流式传输”,则默认为下载。您能否验证您是否已切换到流媒体?您是否在cloudfront上设置了地理限制,以便它使用离您最近的区域中的服务器?谢谢您的回答。关于你的第一个问题:当我创建发行版时,我没有选择下载还是流媒体。或者可能是Web和RMTP之间的选择。如果是这样,我选择网络。->我必须换成RMTP吗?我没有地域限制。我在哪里可以找到它?我找到了地理限制,并且只为法国设置了它(现在)。因此,如果我想将我的申请扩展到欧盟或美国,我必须添加更多的国家。就这样?你有没有试过?如果是这样的话,解决办法是什么?不,始终同时存在冻结。我想知道把AWS S3的视频链接放到AVPlayer中是不是一件好事?AWS S3只能用于流式播放视频?感谢您提供详细信息。我已经测试了这些限制,但几秒钟后视频仍然冻结:(选择RMTP不会有任何帮助?我也尝试打开链接:在vlc中,但它仍然会在同一时间变慢并冻结。你知道吗?它在本地计算机上的vlc中也会失败?你确定文件没有损坏吗?尝试将文件放在常规web服务器上(不是s3)并以这种方式观看电影进行测试。是的,文件没有损坏。我尝试从网站和我的bucket(我下载并上传了它)播放此视频。从vine.co,avplayer不会冻结,但从aws它会冻结:(有什么想法吗?或者我必须把aws换成另一个服务吗?也许我必须使用像wowza这样的服务来从aws s3中进行流式处理没有?它已经在我使用播放器时实现了:但它总是在同一时间冻结。还有其他想法吗?那么我认为这与应用程序端部分无关。