仅在某些设备上使用 MPMoviePlayerController 通过耳机播放声音

Posted

技术标签:

【中文标题】仅在某些设备上使用 MPMoviePlayerController 通过耳机播放声音【英文标题】:sound only playing through headphones on certain devices with MPMoviePlayerController 【发布时间】:2012-02-09 02:42:29 【问题描述】:

我有一个奇怪的问题要问大家。

MPMoviePlayerController 视频播放正常,音频只能通过耳机播放。

真正的拖累是这只发生在一些 iPad 和 iPhone,即使是相同的型号 运行相同的系统!

我在这里创建了一个简单的失败示例:

http://www.porcaro.org/MPMoviePlayerController/TestMovie.zip

我已经看到它在 iPhone 4S、iPhone 4 和 iPad 2 上运行良好但失败了。

这是最相关的代码。感谢您提供任何见解,我也将向 Apple 提交一个错误:

(void)viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];


    moviePath = [NSString stringWithFormat:@"%@/intro.m4v", [[NSBundle mainBundle] bundlePath]];
    NSURL *movieURL = [NSURL fileURLWithPath:moviePath];
    theMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    controlStyle = MPMovieControlStyleEmbedded;
    movieView = [self view];
    movieRect = [[self view] frame];
    controlStyle = MPMovieControlStyleFullscreen;

    theMoviePlayer.controlStyle = controlStyle;
    theMoviePlayer.view.userInteractionEnabled = YES;

    if (1) 
        NSLog(@"Created theMoviePlayer: %@.  Playing: %@", theMoviePlayer, moviePath);
    

    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(checkForEndOfMovie:)
                                          name:MPMoviePlayerPlaybackStateDidChangeNotification
                                          object:theMoviePlayer];

    // this line doesn't fix the problem                                                                                                       
    //[theMoviePlayer prepareToPlay];                                                                                                          
    [[theMoviePlayer view] setFrame:movieRect];
    [movieView addSubview: [theMoviePlayer view]];
    [theMoviePlayer play];

【问题讨论】:

【参考方案1】:

这是一个老问题,但也许它会对某人有所帮助。我遇到了同样的问题,发现它仅在手机处于静音模式时发生。

解决方法是将播放器的useApplicationAudiosession属性设置为false。

[theMoviePlayer setUseApplicationAudioSession:NO];

【讨论】:

【参考方案2】:

这个问题曾经发生在我使用 mpMoviePlayer 在 iPad 2 上播放视频时。视频播放完美,但只有在连接耳机时才会播放音频。

解决问题的办法:

[theMoviePlayer setUseApplicationAudioSession:NO];

【讨论】:

以上是关于仅在某些设备上使用 MPMoviePlayerController 通过耳机播放声音的主要内容,如果未能解决你的问题,请参考以下文章

仅在某些设备上出现核心数据标量错误

ALAssetLibrary ,它仅在某些设备上的所有照片中显示部分照片

Fabric/Crashlytics NoClassDefFoundError 仅在某些设备上

iAD 仅在某些设备上工作

Firebase仅在某些设备上进行身份验证?

仅在设备旋转时旋转某些 UI 元素