2014-06-22 6 views
5

Im Moment ist dies, wie ich ein Video auf dem subview meiner UIViewController ich spiele:Disable Audio (und Unterbrechung) mit MPMoviePlayerController Swift mit

override func viewDidAppear(animated: Bool) { 
    let filePath = NSBundle.mainBundle().pathForResource("musicvideo", ofType: "mp4") 
    self.moviePlayerController.contentURL = NSURL.fileURLWithPath(filePath) 
    self.moviePlayerController.play() 
    self.moviePlayerController.repeatMode = .One 
    self.moviePlayerController.view.frame = self.view.bounds 
    self.moviePlayerController.scalingMode = .AspectFill 
    self.moviePlayerController.controlStyle = .None 
    self.moviePlayerController.allowsAirPlay = false 
    self.view.addSubview(self.moviePlayerController.view) 
} 

ich auf Lesarten haben die Audio-deaktivieren indem Sie Folgendes tun (von denen keines überhaupt funktioniert). Denken Sie daran, ich versuche es auf den Punkt deaktivieren von nicht mit der aktuellen Musik unterbrochen wird über die Musik-App spielen, Spotify etc.

// 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 nicht einmal eine Einstellung für Einstellung das tatsächliche Volumen haben? Es ist eine Kontrolle.

3) self.moviePlayerController.useApplicationAudioSession = false

Antwort

5

So fand ich this answer.

Dies ist mein Swift-Code, mit dem ich endete. Ich habe dann einen AVPlayerLayer verwendet, um die Ansicht als Sublayer hinzuzufügen, was perfekt funktioniert.

Dank der OP, die es geschafft, einen Apple Techniker zu bekommen und das Original Objective-C code zur Verfügung gestellt.

Die einzigen Probleme, die ich mit Blick auf bin jetzt, dass es:

1) aktuelle Musikwiedergabe Unterbricht, ob es aus Musik, Spotify ist usw.

2) Video aufhört zu spielen, wenn Ich schließe die App und öffne sie wieder.

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

hi @gotnull (netter name!) Jede möglichkeit, die sie bei dieser frage über das capturen von video helfen konnten? http://stackoverflow.com/questions/34704032/swift-video-records-at-one-size-but-renders-at-wrong-size – Crashalot