2014-06-22 14 views
5

kullanarak devre dışı bırak Ses (ve kesinti), bu benim UIViewController subview bir video oynuyorum nasıl Aşağıdakileri yaparak (hiçbiri hiç işe yaramıyor). Unutmayın ben vs. Müzik uygulaması, Spotify,MPMoviePlayerController anda Swift

// Playing media items with the applicationMusicPlayer will restore the user's Music state after the application quits. 

// The current volume of playing music, in the range of 0.0 to 1.0. 
// This property is deprecated -- use MPVolumeView for volume control instead. 

1) MPMusicPlayerController.applicationMusicPlayer().volume = 0

2) MPVolumeView bile yok yoluyla oynarken şimdiki müziği kesintiye değil noktasına devre dışı bırakmak için çalışıyorum gerçek ses seviyesinde ayarı için ayarınız mı var? Bu bir kontrol.

3)

cevap

5

self.moviePlayerController.useApplicationAudioSession = false Yani this answer buldum.

Bu, ilerlediğim Swift kodum. Daha sonra mükemmel bir şekilde çalışan alt katman olarak görünümüne eklemek için AVPlayerLayer kullandım.

Bir Apple teknisyenini tutmayı başarmış ve orijinali Objective-C code sağlanmış olan OP sayesinde.

Şimdi yüzleşiyorum sadece sorunların

tam o:

1) o vb Müzik, Spotify, Merkezi veya akım müzik çalmayı keser

2) video eğer yürütmeyi durdurur Uygulamayı kapatıp tekrar açarım.

override func viewDidAppear(animated: Bool) { 
    let filePath = NSBundle.mainBundle().pathForResource("musicvideo", ofType: "mp4") 

    var asset: AVURLAsset? 
    asset = AVURLAsset.URLAssetWithURL(NSURL.fileURLWithPath(filePath), options: nil) 
    var audioTracks = NSArray() 
    audioTracks = asset!.tracksWithMediaType(AVMediaTypeAudio) 

    // Mute all the audio tracks 
    let allAudioParams = NSMutableArray() 
    for track: AnyObject in audioTracks { 
     // AVAssetTrack 
     let audioInputParams = AVMutableAudioMixInputParameters() 
     audioInputParams.setVolume(0.0, atTime: kCMTimeZero) 
     audioInputParams.trackID = track.trackID 
     allAudioParams.addObject(audioInputParams) 
    } 

    let audioZeroMix = AVMutableAudioMix() 
    audioZeroMix.inputParameters = allAudioParams 

    // Create a player item 
    let playerItem = AVPlayerItem(asset: asset) 
    playerItem.audioMix = audioZeroMix 

    // Create a new Player, and set the player to use the player item 
    // with the muted audio mix 
    let player = AVPlayer.playerWithPlayerItem(playerItem) as AVPlayer 

    player.play() 

    let layer = AVPlayerLayer(player: player) 
    player.actionAtItemEnd = .None 

    layer.frame = self.view.bounds 
    layer.videoGravity = AVLayerVideoGravityResizeAspectFill 
    self.view.layer.addSublayer(layer) 
} 
+0

merhaba @gotnull (güzel isim!) Video çekimi ile ilgili bu soruya yardımcı olabilecek bir ihtimal var mı? http://stackoverflow.com/questions/34704032/swift-video-records-at-one-size-but-renders-at-wrong-size – Crashalot