Tag: avplayer

AVPlayer / AVPlayerItem如何通知我的应用程序有关不可达的networking故障?

我正在使用AVPlayer在iOS应用程序中实现自定义video播放器。 要从networking播放video,我分配一个播放器: [[AVPlayer alloc] initWithURL:_URL]; 创build资产: AVURLAsset *asset = [AVURLAsset URLAssetWithURL:self.URL options:@{AVURLAssetPreferPreciseDurationAndTimingKey : @(YES)}]; asynchronous加载playable密钥: NSArray *keys = @[@"playable"]; [asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{ dispatch_async(dispatch_get_main_queue(), ^{ for (NSString *key in keys) { NSError *error; AVKeyValueStatus status = [asset statusOfValueForKey:key error:&error]; if (status == AVKeyValueStatusFailed) { NSLog(@"Failed to load asset key %@ error %@", key, [error localizedDescription]); [self […]

AVPlayer在全屏热点时调整窗口大小时会崩溃

我正在编写一个应用程序,使用它可以观看各种各样的video。 我在全屏button上点击打开video,用户可以使用播放控件调整窗口大小。 我遇到的问题是,当用户通过热点分享他的互联网时,应用程序顶部有一个蓝色栏。 在此时调整窗口大小会导致AVKit框架崩溃(我相信)。 使用Swift 2.3,Xcode 7.3.1。 我的手机,iPhone 6s,使用iOS 10,我也尝试了iOS 9 iPhone 6 Plus,同样的问题。 碰撞: Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<AVFullScreenPlaybackControlsViewController: 0x102933000> should have parent view controller:<AVPlayerViewController: 0x10212d800> but actual parent is:<AVFullScreenViewController: 0x10884d900>' 我的代码: private let playerController = AVPlayerViewController() private var player: AVPlayer! private func playVideo(media: Media) { player = […]

如何使用UICollectionView玩Facebook风格的video

我正在尝试使用ZOWVideoPlayer在UICollectionview Cell中播放video。 video播放完美,但目前我的collections视图正在播放所有可见的video。 我只想播放单个完全可见的video。 这意味着当前没有被滚动过程裁剪的video(像素不是在屏幕外,但是完全可见)。 我还添加了代码来检查scrollview委托方法中的完整可见单元格,但是然后我的collectionview卡住了1或2秒,然后移动,所以请帮助我。 请先阅读问题,然后进行投票。 这是检查可见单元格的代码 – (void)checkVisibilityOfCell:(CustomCell *)cell inScrollView:(UIScrollView *)aScrollView { @try { CGRect cellRect = [aScrollView convertRect:cell.frame toView:aScrollView.superview]; if (cell.videoPlayer) { if (CGRectContainsRect(aScrollView.frame, cellRect)){ //Play Video } else{ //Pause Video } } } @catch (NSException *exception) { } @finally { } }

AVPlayer replaceCurrentItemWithPlayerItem不适用于iOS 4.3.3+

我有一个使用AVPlayer构build的audio播放器。 目前,我保持player实例,当我需要交换轨道(无论是从手动select或轨道已达到结束),我创build一个新的AVPlayerItem和我调用replaceCurrentItemWithPlayerItem与新项目。 根据文档, replaceCurrentItemWithPlayerItem是一个asynchronous操作,所以我也观察播放器的currentItem键path。 当被调用时,我告诉我的玩家玩。 这是相关的代码: AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset]; [playerItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:CHStreamingAudioPlayer_PlayerItemStatusChangedContext]; if (!_player) { _player = [[AVPlayer alloc] initWithPlayerItem:playerItem]; [_player addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:CHStreamingAudioPlayer_PlayerStatusChangedContext]; [_player addObserver:self forKeyPath:@"currentItem" options:NSKeyValueObservingOptionNew context:CHStreamingAudioPlayer_PlayerCurrentItemChangedContext]; } else { [_player replaceCurrentItemWithPlayerItem:playerItem]; } 这里是关键值观察callback: – (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (context == CHStreamingAudioPlayer_PlayerCurrentItemChangedContext) { […]

iOS的AVPlayer放缓

我正在使用AVPlayer在我的项目中播放在线video。 video播放良好。 现在我想减less/增加video的fps。 以下是我正在使用的代码: self.asset = [AVAsset assetWithURL:self.videoUrl]; // the video player self.player = [AVPlayer playerWithURL:self.videoUrl]; self.player.actionAtItemEnd = AVPlayerActionAtItemEndNone; self.playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; self.playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:[self.player currentItem]]; self.playerLayer.frame = CGRectMake(0, 0, self.view.frame.size.width, self.myPlayerView.frame.size.height); [self.myPlayerView.layer addSublayer:self.playerLayer]; – (void)playerItemDidReachEnd:(NSNotification *)notification { AVPlayerItem *p = [notification object]; [p seekToTime:kCMTimeZero]; } 现在应该如何减less/增加在线video的fps?

AVPlayer锁屏控制

我有一个应用程序,使用AVPlayer在后台播放audio。 我使用MPNowPlayingInfoCenter在locking屏幕和控制中心上显示歌曲的元数据。 除了一件事以外,一切正常。 锁屏和控制中心的遥控器是播客应用程序的遥控器。 他们没有前进和前一个button。 我有一个如何控制的截图: 正如你所看到的,我没有前进和前进的button。 override func viewDidLoad() { super.viewDidLoad() do { try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) UIApplication.sharedApplication().beginReceivingRemoteControlEvents() } catch { print(error) } } @IBAction func play(sender: AnyObject) { if isURLAvailable == false { return } if (player!.rate != 0 && player!.error == nil) { player!.pause() } else { player!.play() } updateImage() } func playSong(song: Song) […]

AVPlayerdynamic音量控制

如何dynamic更改AVPlayer的音量? 我的意思是,我想在每次按下button时将音量静音。 给定的代码似乎只能在编译时改变它。 如何在运行时间呢? AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[self myAssetURL] options:nil]; NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio]; NSMutableArray *allAudioParams = [NSMutableArray array]; for (AVAssetTrack *track in audioTracks) { AVMutableAudioMixInputParameters *audioInputParams =[AVMutableAudioMixInputParameters audioMixInputParameters]; [audioInputParams setVolume:0.0 atTime:kCMTimeZero]; [audioInputParams setTrackID:[track trackID]]; [allAudioParams addObject:audioInputParams]; } AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix]; [audioZeroMix setInputParameters:allAudioParams]; AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset]; [playerItem setAudioMix:audioZeroMix]; AVPlayer […]

使用AVPlayer的audioAirplay不能在后台工作

我正在使用来自远程URL的AVPlayer类进行audio回放。 如果我只是玩耳机/内置扬声器,它会玩的很好,但我看到AirPlay的一些古怪。 当我改变使用AppleTV AirPlay时,它将stream式传输audio,但在我的iPhone上,audio播放指示器(顶部菜单栏中的小“播放”三angular形)消失,当我locking手机而不是继续背景,它停止。 (当正常播放时,它在后台播放很好)。 为什么AVPlayer不能在后台通过AirPlay播放audio? 这是其他人看到的吗? 有没有办法解决它?

MPMoviePlayerViewController观察'_serverConnectionDiedNotification'

当使用MPMoviePlayerViewController时,我收到了一个错误通知,如下所示,应用程序崩溃。 _serverConnectionDiedNotification。 信息 – 通知=错误域= AVFoundationErrorDomain代码= -11819“无法完成操作”UserInfo = 0x5dfcb0 {NSLocalizedRecoverySuggestion =稍后再试,NSLocalizedDescription =无法完成操作},AVPlayer =,currentTime = 0.00 2012-05-27 15:32:41.777 AnswerMania [3885:707] *终止应用程序由于未捕获的exception'NSInvalidArgumentException',原因:'一个AVPlayerItem不能与多个AVPlayer实例关联' 这并不总是发生。 我已经观察到所有的MpMoviePlayerController通知,但是这个错误是不能被观察到的。 它与服务器连接有关吗? serverConnectionDiedNotification如何被观察?

在AVPlayer中播放与糟糕的互联网stream

AVPlayer播放来自networkingstream的资源时,会在下载内容到达时暂停。 所以,我的问题是,如何知道,它因为networking不好而停止? 如何在下载之后播放它,比如说,下一个10秒的资产?