【问题标题】:Force audio to go through speakers with MPMoviePlayerController使用 MPMoviePlayerController 强制音频通过扬声器
【发布时间】:2013-11-07 06:43:51
【问题描述】:

过去几个小时我一直在搞砸这个问题,但我仍然无法找到解决方案。我正在创建一个使用 twilio 两个连接到用户的应用程序。我可以通过以下方式强制将音频输出到扬声器:

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

问题是当我使用 MPMoviePlayerController 播放来自网络的流时。它接管音频会话并再次通过耳机强制它返回。我仍然可以与用户交谈,但我只能使用耳机(电话)扬声器来听到他们的声音。我已经尝试过许多不同的方式强制回到扬声器,但似乎没有任何效果,显然阻止 MPMoviePlayerController 使用 AudioSession 的能力已被弃用。关于如何解决这个问题的任何想法?我的代码在这里:

UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
_streamPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:fullURL]];


[[_streamPlayer view] setFrame: [self.view bounds]];

[self.view addSubview: [_streamPlayer view]];


[_streamPlayer play];

提前感谢您的帮助。

【问题讨论】:

    标签: ios7 mpmovieplayercontroller avaudiosession


    【解决方案1】:

    这个问题的答案是设置默认路由而不是覆盖它。您可以使用此代码设置默认路由:

    UInt32 doChangeDefaultRoute = 1;
    AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(doChangeDefaultRoute), &doChangeDefaultRoute);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多