iOS Swift静音 - 取消静音音频,如facebook自动播放视频

时间:2015-06-07 05:07:13

标签: ios swift mpmovieplayercontroller

我目前正在使用MPMoviePlayerController?在我的应用程序内播放视频。但我希望有Facebook风格的视频,最初视频播放静音,但当用户点击它静音。

我是编程新手,但根据我的研究,我无法在MPMoviePlayerController中找到任何东西?我们可以做到这一点。

目前我正在使用以下代码播放视频。

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()
    }
}}

1 个答案:

答案 0 :(得分:1)

与Apple技术人员交谈后发现,使用MPMoviePlayerController无法控制或静音音频。

因此,您可以使用AVFoundations AVPlayer类在播放FB时静音视频。

源代码:

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;

一旦你静音音频你就可以改变布尔值来取消音频,如下所示。   avPlayer.muted = NO;