如何在应用程序中使用 swift 流式传输 mp3 文件?

How do i stream a mp3 file with swift in an app?

我有一个 MP3 文件,我希望能够使用 'Media Player' 框架播放该文件。如何将此文件上传到 URL?我试过将它放在 YouTube 上,然后将 YouTube URL 放在应用程序中,但它不起作用。我该怎么办?

这是我的应用程序代码:

import UIKit
import MediaPlayer

class AudioViewController: UIViewController {
    var movie:MPMoviePlayerViewController?

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
         self.playAudio("https://www.youtube.com/embed/tQsxOtH8-RQ")
    }

    func playAudio(URL:String){
        let movieurl:NSURL? = NSURL(string: "\(URL)")

        if movieurl != nil {
            self.movie = MPMoviePlayerViewController(contentURL: movieurl!)
        }

        if self.movie != nil {
            self.presentViewController(self.movie!, animated: true, completion: nil)
            self.movie?.moviePlayer.play()
        }
    }
}

你的代码没问题。下面的代码片段也有效。您当前遇到的问题是由于尝试在 MPMoviewPlayerViewController 中播放 youtube/vimeo 流造成的。如果你想从这些网站流式传输,你将不得不使用 UIWebView。 GitHub 和其他地方有一些自定义播放器,但如果您使用下面的代码片段并将 URL 替换为您自己网站(即 WordPress)上某处托管的 mp3,则播放效果会很好。

var url = NSURL(string: "non-youtube/vimeo URL")

var mediaPlayerController = MPMoviePlayerViewController(contentURL: url)
self.presentViewController(mediaPlayerController, animated: true, completion: nil)
mediaPlayerController.moviePlayer.prepareToPlay()
mediaPlayerController.moviePlayer.play()

希望对您有所帮助。

仅供参考,确保添加 MediaPlayer 框架并将 import MediaPlayer 行添加到 class.

的顶部