MPMoviePlayerViewController仅显示视频但不播放音频iOS 8

时间:2015-06-15 23:05:54

标签: ios swift audio video mpmovieplayercontroller

请原谅我,如果已经提出这个问题,但我已经到处寻找,我能找到的只是来自iOS 5.0的老问题而且人们有相反的问题。

我的问题是我创建了一个我想在我的应用程序中使用的视频,最近我添加了音频。视频播放没问题,但音频无法播放。如果我在计算机中的任何视频播放器中播放视频,声音就在那里,所以我无法弄清问题是什么。

这是我的代码:

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)

}

非常感谢任何想法或建议!

2 个答案:

答案 0 :(得分:2)

这是基于@ user2709666的响应的swift解决方案

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

在播放视频之前调用此方法。

编辑Swift 2.2:

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

答案 1 :(得分:1)

进行AVAudioSession会话。 以下是代码:

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

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

并在您的视频播放器之前添加此内容。我相信这对你有用,我以前也遇到过同样的问题。