【问题标题】:AVPlayer not playing URL from backendAVPlayer 不从后端播放 URL
【发布时间】:2016-01-19 21:29:24
【问题描述】:

我正在使用 AVPlayer 播放我从后端获取的 URL。最初,我将这些项目下载到我的文档目录并使用 URL 通过AVAudioPlayer 播放文件。我切换到AVPlayer,所以我可以流式传输音频而不是下载它们。我看到 URL 被成功获取,但是一旦我尝试播放它们,我就没有音频。下面是我正在获取的 URL 示例:

/Users/ellie/Desktop/ellie/sound/uploads/ellie1/Track5.m4a

var player: AVPlayer!
var fetchedURL: NSURL?

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    //I left out the fetching process
    self.fetchedURL = NSURL(string:parseString!)
    print("fetchedURL is \(self.fetchedURL!)")
    self.playCell()
}

func playCell() {

    let audioSession: AVAudioSession = AVAudioSession.sharedInstance()

    do {
        try audioSession.setCategory(AVAudioSessionCategoryPlayback)
    } catch _ {
    }

    do {
        try audioSession.setActive(true)
    } catch _ {
    }

    print("fetchedURL is \(self.fetchedURL!)")
    player = AVPlayer(URL:self.fetchedURL!)
    player.play()
}

【问题讨论】:

  • “我切换到 AVPlayer,这样我就可以流式传输音频而不是下载它们了”直播网址在哪里? /Users/ellie/Desktop/ellie/sound/uploads/ellie1/Track5.m4a 这个网址看起来不像其他任何人都可以帮助您。
  • NSURL(string:) 仅用于网络链接。对于本地资源路径,您需要使用 NSURL(fileURLWithPath:) developer.apple.com/library/mac/documentation/Cocoa/Reference/…:
  • 你为什么不直接使用try?或者试试!而不是“尝试 catch_”
  • 我的后端都是本地的,但我认为既然我是从服务器访问文件,我仍然必须将 Url 视为 Web 链接

标签: ios swift avplayer


【解决方案1】:

AVPlayer 将仅播放本地和远程托管的视频文件,还将播放流媒体链接。要进行流式传输,您需要确保使用正确的流式传输链接,此处提供了一些示例:https://stackoverflow.com/questions/10104301/hls-streaming-video-url-need-for-testing

请注意,将视频文件转换为托管流媒体链接并非易事。 vimeo 等服务提供上传和编码视频文件的功能,但仅在“专业”版本下才会为您提供流媒体链接。

其他选项包括配置 AWS S3 存储桶来托管和编码您的视频文件。 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/TutorialStreamingJWPlayer.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2020-02-29
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多