2015-06-15 4 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 uasing xamarin, концептуально это все то же самое, что и имена api, просто синтаксис laungge - diff;) – user2709666

2

Это решение в стрижа на основе @ user2709666 Ответные

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

вызовов это перед игрой видео.

Edit для Swift 2.2:

do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
     try AVAudioSession.sharedInstance().setActive(true) 
    } catch let error as NSError { 
     print(error) 
    } 
Смежные вопросы