【问题标题】:MPMoviePlayerViewController only display video but not playing the audio iOS 8MPMoviePlayerViewController 仅显示视频但不播放音频 iOS 8
【发布时间】:2015-06-15 23:05:53
【问题描述】:

如果这个问题已经被问过,请原谅我,但我到处找,我只能找到来自 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)

}

任何想法或建议将不胜感激!

【问题讨论】:

  • 检查 1 个可能的原因,您的设备是否处于静音模式(静音键已关闭)。这只是一个可能的原因,除了所有与编码相关的东西。

标签: ios swift audio video mpmovieplayercontroller


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    创建一个 AVAudioSession 会话。 以下是代码:

    var session = AVAudioSession.SharedInstance();
    session.SetCategory(new NSString("AVAudioSessionCategoryPlayback"), AVAudioSessionCategoryOptions.DefaultToSpeaker, out error);
    
    if (error != null)
    {
        Console.WriteLine(error);
    }
    

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

    【讨论】:

    • 非常感谢!这解决了问题,尽管我不得不稍微修改一下代码。那是什么语言?我注意到不是很快。
    • hI,这是 c# 语言,我使用 xamarin 制作 Ios 代码,从概念上讲,它与 api 名称一样,只是 launguge 语法不同;)
    猜你喜欢
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多