我目前正在使用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()
}
}}
答案 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;