2014-09-27 130 views
3

我想在Swift中從Internet流式傳輸音頻,但尚未找到正確的功能示例。Swift Radio Streaming AVPlayer

Objective-C的

AVPlayerItem* playerItem =[AVPlayerItem playerItemWithURL:[NSURL URLWithString:streamURL]]; 
[playerItem addObserver:self forKeyPath:@"timedMetadata" options:NSKeyValueObservingOptionNew context:nil]; 
music = [AVPlayer playerWithPlayerItem:playerItem]; 
[music play]; 

什麼我試着在斯威夫特

let playerItem = AVPlayerItem(URL:NSURL(string:url)) 
     var player:AVPlayer! 
     player = AVPlayer(playerItem:playerItem) 
     player.rate = 1.0; 
     player.play() 
//this is not working 

我也嘗試添加playerItem.addObserver(個體經營,forKeyPath: 「timedMetadata」,選項:NSKeyValueObservingOptions .New,context:nil)但出錯

'實例0x16edb AVPlayerItem類的d20被釋放,而鍵值觀察者仍然在其中註冊。當前的觀察信息:( 上下文:0x0,屬性:0x16ea5880> )'

有關如何解決此問題的任何想法?

+0

您是否考慮使用AVAudioPlayer? – 2015-02-03 12:57:37

+0

播放命令後你確定'playerItem'是否還活着嗎?快速嘗試的是在播放命令之後添加一個「sleep(10)」。這將使線程保持十秒鐘。如果你幸運,那麼可能會有一些聲音。 – Mellson 2015-02-09 19:30:11

回答

2

我用swift創建了一個收音機播放器,但我用MediaPlayer框架來播放。

var radioPlayer = MPMoviePlayerController(contentURL: "YOUR NSURL OBJECT WITH YOUR CUSTOM URL TO STREAM HERE"); 
radioPlayer.view.frame = CGRect(x: 0, y: 0, width: 0, height: 0) 
radioPlayer.view.sizeToFit() 
radioPlayer.movieSourceType = MPMovieSourceType.Streaming 
radioPlayer.fullscreen = false; 
radioPlayer.shouldAutoplay = true; 
radioPlayer.prepareToPlay() 
radioPlayer.play() 
radioPlayer.controlStyle = MPMovieControlStyle.None; 

如果你需要聽從流metada你需要觀察該通知MPMoviePlayerTimedMetadataUpdatedNotification

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("metadataUpdated:"), name:MPMoviePlayerTimedMetadataUpdatedNotification, object: nil); 

func metadataUpdated(n:NSNotification) 
{ 
    if(radioPlayer.timedMetadata != nil && radioPlayer.timedMetadata.count > 0) 
    { 
     let firstMeta:MPTimedMetadata = radioPlayer.timedMetadata.first as! MPTimedMetadata; 
     let data:String = firstMeta.value as! String; 
     println(data); //your metadata here 
    } 
} 

有了這個,你將可以讓你的電臺播放器,因爲這臺收音機我的工作,我做了一個LIB在Itunes中獲取關於音樂的信息,好吧,這個庫是開放的,因爲我只想要一個幫助,如果你發現問題,錯誤我們更好的解決方案,修復和推動所有。

ItunesSearch Lib in GitHub