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

Posted

技术标签:

【中文标题】MPMoviePlayerViewController 仅显示视频但不播放音频 iOS 8【英文标题】:MPMoviePlayerViewController only display video but not playing the audio 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 个可能的原因,您的设备是否处于静音模式(静音键已关闭)。这只是一个可能的原因,除了所有与编码相关的东西。 【参考方案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 语法不同;)

以上是关于MPMoviePlayerViewController 仅显示视频但不播放音频 iOS 8的主要内容,如果未能解决你的问题,请参考以下文章