Skip to content

Commit

Permalink
fix #618
Browse files Browse the repository at this point in the history
  • Loading branch information
kingslay committed Nov 7, 2023
1 parent ea924e7 commit 994b6c0
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 9 deletions.
2 changes: 1 addition & 1 deletion FFmpegKit
12 changes: 4 additions & 8 deletions Sources/KSPlayer/AVPlayer/KSOptions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -490,23 +490,18 @@ public extension KSOptions {
static func outputNumberOfChannels(channelCount: AVAudioChannelCount) -> AVAudioChannelCount {
let maximumOutputNumberOfChannels = AVAudioChannelCount(AVAudioSession.sharedInstance().maximumOutputNumberOfChannels)
let preferredOutputNumberOfChannels = AVAudioChannelCount(AVAudioSession.sharedInstance().preferredOutputNumberOfChannels)
KSLog("[audio] maximumOutputNumberOfChannels: \(maximumOutputNumberOfChannels)")
KSLog("[audio] preferredOutputNumberOfChannels: \(preferredOutputNumberOfChannels)")
let isSpatialAudioEnabled = isSpatialAudioEnabled(channelCount: channelCount)
KSLog("[audio] isSpatialAudioEnabled: \(isSpatialAudioEnabled)")
let isUseAudioRenderer = KSOptions.audioPlayerType == AudioRendererPlayer.self
KSLog("[audio] isUseAudioRenderer: \(isUseAudioRenderer)")
KSLog("[audio] maximumOutputNumberOfChannels: \(maximumOutputNumberOfChannels), preferredOutputNumberOfChannels: \(preferredOutputNumberOfChannels), isSpatialAudioEnabled: \(isSpatialAudioEnabled), isUseAudioRenderer: \(isUseAudioRenderer) ")
let maxRouteChannelsCount = AVAudioSession.sharedInstance().currentRoute.outputs.compactMap {
$0.channels?.count
}.max() ?? 2
KSLog("[audio] currentRoute max channels: \(maxRouteChannelsCount)")
var channelCount = channelCount
if channelCount > 2 {
let minChannels = min(maximumOutputNumberOfChannels, channelCount)
if minChannels > preferredOutputNumberOfChannels {
try? AVAudioSession.sharedInstance().setPreferredOutputNumberOfChannels(Int(minChannels))
KSLog("[audio] set preferredOutputNumberOfChannels: \(minChannels)")
}
try? AVAudioSession.sharedInstance().setPreferredOutputNumberOfChannels(Int(minChannels))
KSLog("[audio] set preferredOutputNumberOfChannels: \(minChannels)")
// iOS 有空间音频功能,所以不用处理
#if os(tvOS) || targetEnvironment(simulator)
if !(isUseAudioRenderer && isSpatialAudioEnabled) {
Expand All @@ -516,6 +511,7 @@ public extension KSOptions {
}
#endif
} else {
try? AVAudioSession.sharedInstance().setPreferredOutputNumberOfChannels(2)
channelCount = 2
}
KSLog("[audio] outputNumberOfChannels: \(AVAudioSession.sharedInstance().outputNumberOfChannels)")
Expand Down
3 changes: 3 additions & 0 deletions Sources/KSPlayer/MEPlayer/KSMEPlayer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@ public class KSMEPlayer: NSObject {
}

deinit {
#if !os(macOS)
try? AVAudioSession.sharedInstance().setPreferredOutputNumberOfChannels(2)
#endif
NotificationCenter.default.removeObserver(self)
videoOutput?.invalidate()
playerItem.shutdown()
Expand Down

0 comments on commit 994b6c0

Please sign in to comment.