cloudfront 视频流无法在 iOS 设备上运行

riy*_*uja 5 amazon-s3 video-streaming ios amazon-cloudfront xcode6

我正在尝试使用亚马逊cloudfront网络分发在iOS设备上流式传输视频(苹果设备不支持RTMP流式传输)并且视频存储在s3中。此外,每个人都可以访问该链接。当我尝试将视频链接粘贴到浏览器中时视频开始下载而不是流式传输。在检查了 Instagram 的网站后,我发现 Instagram 做了同样的事情(也许),但不同之处在于它使用 akamai CDN,而我使用的是亚马逊的 cloudfront

我的链接:

http://d16jy53srxox6v.cloudfront.net/brown.mp4
Run Code Online (Sandbox Code Playgroud)

Instagram 视频串流链接:

https://igcdn-videos-b-2-a.akamaihd.net/hphotos-ak-xfa1/t50.2886-16/11773361_692383954227382_242786346_n.mp4
Run Code Online (Sandbox Code Playgroud)

Instagram 视频流完美,我的视频可以下载而不是流式传输。在谷歌搜索后,我发现 HLS 是解决方案之一,但我正在寻找简单的流式传输替代方案,因为我的视频最大长度为 1 分钟,而 HLS 适合较大的文件。谁能建议我该怎么做才能使我的视频在没有 HLS 的情况下可以流式传输?

此外,我尝试在 ios 设备中流式传输它,但它尝试下载然后播放它。这是我的代码:

    -(IBAction)click:(id)sender
{
    // Make a URL
    NSURL *url = [NSURL URLWithString:
                  @"http://d16jy53srxox6v.cloudfront.net/brown.mp4"];

    // Initialize the MPMoviePlayerController object using url
    _videoPlayer =  [[MPMoviePlayerController alloc]
                     initWithContentURL:url];


    // Set control style to default
    _videoPlayer.controlStyle = MPMovieControlStyleDefault;

    // Set shouldAutoplay to YES
    _videoPlayer.shouldAutoplay = YES;
    _videoPlayer.movieSourceType=MPMovieSourceTypeStreaming;

    // Add _videoPlayer's view as subview to current view.
    [self.view addSubview:_videoPlayer.view];

    // Set the screen to full.
    [_videoPlayer setFullscreen:YES animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

ash*_*ite -1

问题可能出在content type上传的视频上

您可以转到 s3 存储桶并检查选项卡metadata下的字段properties

我在 s3 上的一个视频也遇到了同样的问题,它过去是下载而不是播放。

我通过将元数据添加到视频中解决了这个问题
Content-Type = video/mp4

希望这可以帮助