IOS Swift Mute-unmute audio like facebook autoplay video

Am I currently using MPMoviePlayerController? to play video in my application. But I want to have a facebook style video where initially the video playback is disabled, but when the user disconnects it, it disconnects.

I'm new to programming, but according to my research, I couldn't find anything in MPMoviePlayerController? in which we can do it.

I am currently using the following code to play a video.

class InformationViewController: UIViewController {

@IBOutlet var thumbnailImage: UIImageView!
@IBOutlet var videoPlayerView: UIView!

@IBOutlet var controlBtn: UIButton!

var moviePlayer:MPMoviePlayerController!
var url:NSURL = NSURL(string: "http://jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v")!
var audioPlayer = AVAudioPlayer()

override func viewDidLoad() {
    super.viewDidLoad()


}


@IBAction func controlBtn(sender: AnyObject) {
    controlBtn.alpha = 0
    moviePlayer = MPMoviePlayerController(contentURL: url)
    let frameWidth = self.videoPlayerView.frame.size.width
    let frameHeight = self.videoPlayerView.frame.size.height

    //moviePlayer.view.frame = CGRect(x: 24, y: 18, width: frameWidth, height: frameHeight)

    self.videoPlayerView.addSubview(moviePlayer.view)


    //     Send button backword
    self.videoPlayerView.sendSubviewToBack(moviePlayer.view)
    moviePlayer.fullscreen = false
    moviePlayer.controlStyle = MPMovieControlStyle.Embedded

    // Pure Visual Format Language style (http://stackoverflow.com/questions/26180822/swift-adding-constraints-programmatically)
    (moviePlayer.view).setTranslatesAutoresizingMaskIntoConstraints(false)
    let views = ["view": videoPlayerView, "videoView": moviePlayer.view]

    var constH = NSLayoutConstraint.constraintsWithVisualFormat("H:[view]-(<=0)-[videoView(\(frameWidth))]", options: .AlignAllCenterY, metrics: nil, views: views)
    view.addConstraints(constH)
    var constW = NSLayoutConstraint.constraintsWithVisualFormat("V:[view]-(<=0)-[videoView(\(frameHeight))]", options: .AlignAllCenterX, metrics: nil, views: views)
    view.addConstraints(constW)

}

override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)  ///< Don't for get this BTW!

    if let player = self.moviePlayer {
        player.stop()
    }
}}

      

+3


source to share


1 answer


After talking with an Apple technician, it turns out that it is not possible to control or mute the sound using MPMoviePlayerController.

So, you can use the AVFoundations class AVPlayer to mute the sound during playback like FB.

Source:



AVAsset *asset = [AVAsset assetWithURL:[NSURL URLWithString:strURL]];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset];
AVPlayer *avPlayer = [AVPlayer playerWithPlayerItem:playerItem];

//Using this you can mute the audio and play only video as you wish
   avPlayer.muted = YES;

AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer];
avPlayerLayer.frame = IS_IPAD ? CGRectMake(0, 0, 748, 423): CGRectMake(0, 0, 311, 200);
avPlayerLayer.backgroundColor =[UIColor clearColor].CGColor;
avPlayerLayer.videoGravity =AVLayerVideoGravityResize;

      

Once you've muted the sound, you can simply change the boolean to enable the sound as shown below. avPlayer.muted = NO;

+1


source







All Articles