iOS 应用上的 mp4 视频使用 Swift

mp4 video on iOS app using Swift

我一直在查看其他有关从网站播放视频的已发布问题,none 的解决方案对我有用。我在测试我的应用程序时出现黑屏,而且视频似乎从未加载过。

在全球范围内,我已声明:

var moviePlayer:MPMoviePlayerController!

在我的 ViewDidLoad() 函数中,我有:

let url:NSURL = NSURL(string:"http://uapi-f1.picovico.com/v2.1/v/nMirP/ArwenUndomiel.mp4")!
    self.moviePlayer = MPMoviePlayerController(contentURL: url)
    if let player = self.moviePlayer {
        player.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
        player.view.sizeToFit()
        player.scalingMode = MPMovieScalingMode.None
        player.movieSourceType = MPMovieSourceType.Streaming
        self.view.addSubview(player.view)
        player.play()

    }

感谢您的帮助!

Picovico 给你的 URL 实际上会用一条消息来响应,告诉请求者内容不在这个位置,但他们应该尝试另一个位置 - 这是 [=38] 的常用技术=] 重定向。

如果您在浏览器中尝试 link 并捕获网络请求和响应,您可以看到这一点。例如,使用您在 Chrome 中包含的 link 会给出以下响应:

您可以看到服务器告诉客户端(在本例中为浏览器)重定向(即发送新请求)到 S3 amazon URL 这是您的视频实际被 Picovico 存储的地方.

当浏览器随后向该位置发送请求时,它成功找到了视频:

使用 ffprobe 查看您的视频,格式看起来不错,因此 iOS 客户端似乎很难处理重定向,或者 URL 有问题在 Picovico 的服务器上临时重定向。如果您现在仍然遇到问题,那么很可能是前者的问题。

如果你看看这里,你会发现有人是如何解决 iOS 媒体播放器处理重定向的问题的:

  • iOS Mediaplayer and URL redirection