在不中断音频的情况下播放视频 - 目标 c
Posted
技术标签:
【中文标题】在不中断音频的情况下播放视频 - 目标 c【英文标题】:Playing video without audio interruption - objective c 【发布时间】:2012-07-24 15:10:43 【问题描述】:我的应用播放视频文件时没有声音。它会中断背景中的任何播放音乐(例如 iPod 应用程序)。如果可能的话,如何不中断其他应用程序的音频会话。
我的视频文件没有声音。要播放视频,我使用MPMoviePlayerController
。
编辑:这是我的视频播放器代码:
_player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];
[self installMovieNotificationObservers:nil];
[_player setShouldAutoplay:YES];
[_player setUseApplicationAudiosession:NO];
[_player.view setFrame:self.navController.view.frame];
[_player setMovieSourceType:MPMovieSourceTypeFile];
[_player setRepeatMode:MPMovieRepeatModeNone];
[_player setFullscreen:YES animated:YES];
[_player setControlStyle:MPMovieControlStyleNone];
[_navController.view addSubview:_player.view];
[_player play];
【问题讨论】:
重复; ***.com/questions/1201815/… 【参考方案1】:直接来自 Apple 的文档: http://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html#//apple_ref/occ/instp/MPMoviePlayerController/useApplicationAudioSession
使用ApplicationAudioSession 一个布尔值,指示是否 电影播放器应使用应用的音频会话。
@property (nonatomic) BOOL useApplicationAudioSession 讨论 此属性的默认值为 YES。将此属性设置为 NO 导致电影播放器使用系统提供的音频会话 不可混合播放类别。
重要提示在 iOS 3.1 及更早版本中,电影播放器始终使用 系统提供的音频会话。在 iOS 3.2 中获得相同的行为 以及更新版本,您必须将此属性的值设置为 NO。当这 属性为 YES,电影播放器共享应用程序的音频会话。这 让您控制电影播放器内容与您的互动的方式 音频和来自其他应用程序(如 iPod)的音频。对于重要的 有关使用此功能的指南,请参阅“使用电影和 iPod 音频会话编程指南中的音乐”。
更改此属性的值不会影响当前 播放电影。要使新设置生效,您必须停止 播放,然后重新开始。
可用性 适用于 iOS 3.2 及更高版本。宣布于 MPMoviePlayerController.h
【讨论】:
没有帮助。也许我错过了什么?请检查我更新的代码。【参考方案2】:Swift 5 答案
do
if #available(iOS 10.0, *)
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, mode: AVAudioSession.Mode.default, options: .mixWithOthers)
else
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, options: .mixWithOthers)
try AVAudioSession.sharedInstance().setActive(true)
catch
print(error)
【讨论】:
以上是关于在不中断音频的情况下播放视频 - 目标 c的主要内容,如果未能解决你的问题,请参考以下文章
如何防止使用 AVFoundation 录制视频中断当前正在播放的任何全局音频(Swift)?