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

时间:2015-04-17 15:49:15

标签: ios swift mp3 media-player

我有一个MP3文件,我希望能够使用“媒体播放器”框架播放此文件。如何将此文件上传到URL?我尝试将其放在YouTube上,然后将YouTube网址放在应用中,但它不起作用。我该怎么办?

以下是该应用的代码:

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()
        }
    }
}

1 个答案:

答案 0 :(得分:2)

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

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行添加到班级的顶部。