2015-06-15 136 views
1

請原諒我,如果這個問題已經被問到,但我到處尋找,所有我能找到的是來自iOS 5.0的舊問題,並且人們有相反的問題。MPMoviePlayerViewController只顯示視頻,但不播放音頻iOS 8

我的問題是我創建了一個視頻,我想在我的應用程序中使用,並且我最近添加了音頻。視頻播放沒問題,但音頻不播放。如果我在電腦中的任何視頻播放器中播放視頻,聲音就在那裏,所以我無法弄清楚問題所在。

這裏是我的代碼:

var movieViewController: MPMoviePlayerViewController? 

func playVideoUsingViewController() { 
    if let 
     path = NSBundle.mainBundle().pathForResource("wakyIntro", ofType: "mp4"), 
     url = NSURL(fileURLWithPath: path), 
     movieViewController = MPMoviePlayerViewController(contentURL: url) { 
      self.movieViewController = movieViewController 
      movieViewController.moviePlayer.fullscreen = true 
      movieViewController.moviePlayer.controlStyle = .None 
      movieViewController.moviePlayer.scalingMode = .AspectFill 
      movieViewController.view.userInteractionEnabled = false 
      self.showViewController(movieViewController, sender: self) 
      println("Movie loaded") 
    } else { 
     println("Video failed") 
    } 
} 

然後,我只是從我的ViewController稱之爲:

func mainMenuViewControllerDidPressPlay(mainMenuViewController: MainMenuViewController) { 
    game?.runAction(pressButton) 
    if !videoPlayed{ 
     playVideoUsingViewController() 
    } else if !gameStarted { 
     gameStarted = true 
     game?.bird.startAnimation(game!) 
     game?.bird.startPhysics() 
    } 
    self.hideViewController(mainMenuViewController) 

} 

任何意見或建議,將不勝感激!

+0

檢查1個可能的原因,是你在無聲模式設備(無聲鍵被斷開)。它只是一個可能的原因,除了所有的編碼相關的東西。 –

回答

1

進行AVAudioSession的會話。 以下是代碼:

var session = AVAudioSession.SharedInstance(); 
session.SetCategory(new NSString("AVAudioSessionCategoryPlayback"), AVAudioSessionCategoryOptions.DefaultToSpeaker, out error); 

if (error != null) 
{ 
    Console.WriteLine(error); 
} 

,並在視頻播放前添加此。我相信這會對你有用,我之前也有同樣的問題。

+0

非常感謝!這解決了這個問題,儘管我不得不修改一下代碼。那是什麼語言?我注意到的不是很快。 –

+0

hI,這是C#語言,我使Ios代碼使用xamarin,概念上它與api名稱一樣,只是launguge語法是diff;) – user2709666

2

這是一個基於@ user2709666的反應選擇播放視頻前

var session: AVAudioSession = AVAudioSession.sharedInstance()   
    session.setCategory("AVAudioSessionCategoryPlayback", withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker, error: nil) 

稱這種現象迅速的解決方案。

編輯爲夫特2.2:

do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
     try AVAudioSession.sharedInstance().setActive(true) 
    } catch let error as NSError { 
     print(error) 
    } 
相關問題