Questions tagged «avplayer»

AVPlayer对象用于为单项或多项回放实现控制器和用户界面。

7
在这个区块中强烈地捕捉自我很可能会导致保留周期
如何避免在xcode中出现此警告。这是代码片段: [player(AVPlayer object) addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(0.1, 100) queue:nil usingBlock:^(CMTime time) { current+=1; if(current==60) { min+=(current/60); current = 0; } [timerDisp(UILabel) setText:[NSString stringWithFormat:@"%02d:%02d",min,current]];///warning occurs in this line }];

17
使用AVFoundation AVPlayer循环播放视频?
在AVFoundation中是否有相对简单的循环视频的方法? 我已经如下创建了我的AVPlayer和AVPlayerLayer: avPlayer = [[AVPlayer playerWithURL:videoUrl] retain]; avPlayerLayer = [[AVPlayerLayer playerLayerWithPlayer:avPlayer] retain]; avPlayerLayer.frame = contentView.layer.bounds; [contentView.layer addSublayer: avPlayerLayer]; 然后播放以下视频: [avPlayer play]; 视频播放正常,但在最后停止。使用MPMoviePlayerController,您所要做的就是将其repeatMode属性设置为正确的值。在AVPlayer上似乎没有类似的属性。似乎也没有回调可以告诉我电影何时结束,因此我可以寻找开始并再次播放。 我没有使用MPMoviePlayerController,因为它有一些严重的限制。我希望能够一次播放多个视频流。

9
如何使用Swift播放本地视频?
我有一个简短的mp4视频文件,已将其添加到当前的Xcode6 Beta项目中。 我想在我的应用中播放视频。 经过数小时的搜索,我找不到任何远程帮助。有没有一种方法可以使用Swift来实现,还是必须使用Objective-C?我可以指出正确的方向吗?我不是唯一想知道这一点的人。

6
如何减少iOS AVPlayer启动延迟
请注意,针对以下问题:所有资产在设备上都是本地的-不会进行网络流传输。视频包含音轨。 我正在开发一个iOS应用程序,该程序要求以最小的延迟播放视频文件以启动有问题的视频剪辑。不幸的是,直到我们真正需要启动它之前,我们不知道接下来要播放的特定视频片段。具体来说:当播放一个视频剪辑时,我们将知道下一组(大约)10个视频剪辑是什么,但是直到确切地“立即”播放下一个剪辑时,我们才确切知道哪个剪辑。 要查看实际的启动延迟,我要做的是调用addBoundaryTimeObserverForTimes视频播放器,其时间为一毫秒,以查看视频实际开始播放的时间,我将时间戳记与指示开始播放哪个资产的代码。 从目前为止我所看到的,我发现使用AVAsset加载的组合,然后AVPlayerItem在准备好之后从中创建一个,然后AVPlayerStatusReadyToPlay在调用播放之前等待,通常需要1-3秒才能开始夹。 从那以后,我切换到了我认为大致相等的位置:呼叫[AVPlayerItem playerItemWithURL:]并等待AVPlayerItemStatusReadyToPlay播放。大致相同的性能。 我观察到的一件事是,第一个AVPlayer项加载比其他项慢。似乎有一个想法是,在尝试播放第一个视频之前,先用空/空资产预播AVPlayer,这可能是一种很好的常规做法。[ 第一次播放声音时,AVAudioPlayer的启动缓慢 我希望尽可能缩短视频的开始时间,并且对要尝试的事情有一些想法,但希望有可能提供帮助的人提供一些指导。 更新:下面的想法7的实现产生了大约500 ms的切换时间。这是一个改进,但是最好更快地完成。 想法1:使用N个AVPlayers(无效) 使用〜10个AVPPlayer对象并开始并暂停所有〜10个剪辑,一旦我们知道我们真正需要的剪辑,就切换到并取消暂停正确的剪辑,然后AVPlayer重新开始下一个循环。 我认为这行不通,因为我读过AVPlayer'siOS中的活动限制大约为4 。这里有人在StackOverflow上问这个问题,并发现了4 AVPlayer的限制:在视频之间使用avfoundation快速切换 想法2:使用AVQueuePlayer(无效) 我不相信,推搡10 AVPlayerItems到AVQueuePlayer会预载了他们全部无缝启动。 AVQueuePlayer是一个队列,我认为它实际上只能使队列中的下一个视频准备好立即播放。我不知道要播放约10个视频中的哪个,直到该开始播放为止。ios-AVplayer视频预加载 理念3:加载,播放和保留AVPlayerItems背景(尚未100%确定-效果并不理想) 我正在查看在后台加载和播放每个视频剪辑的第一秒(抑制视频和音频输出)是否有用,并保持对每个视频的引用AVPlayerItem,以及何时知道需要播放哪个项目真实,交换那个,并与活动的交换背景AVPlayer。冲洗并重复。 从理论上讲,最近播放AVPlayer/AVPlayerItem的可能仍会保留一些准备好的资源,从而可以加快后续播放的速度。到目前为止,我还没有看到任何好处,但是我可能没有AVPlayerLayer正确设置背景。我怀疑这是否真的会改善我所看到的情况。 想法4:使用其他文件格式-也许是加载速度更快的文件格式? 我目前正在使用.m4v的(视频MPEG4)H.264格式。H.264有许多不同的编解码器选项,因此某些选项的查找速度可能比其他选项更快。我发现使用更高级的设置来减小文件的大小会增加搜索时间,但没有找到其他选择的方法。 理念5:无损视频格式+ AVQueuePlayer的组合 如果有一种视频格式可以快速加载,但是文件大小可能很疯狂,则一个想法可能是,准备每个视频剪辑的前10秒,并准备一个肿但加载速度更快的版本,但返回然后用H.264编码的资产 使用AVQueuePlayer,并以未压缩的文件格式添加前10秒,然后再添加H.264中的文件,最多可准备10秒的准备/预加载时间。因此,我将两全其美:快速的启动时间,但也受益于更紧凑的格式。 想法6:使用非标准AVPlayer /自己编写/使用其他人的 考虑到我的需求,也许我不能使用AVPlayer,而不得不诉诸AVAssetReader,并解码前几秒钟(可能将原始文件写入磁盘),并且在播放时,请使用原始格式播放它快退。对我来说,这似乎是一个巨大的项目,如果我以幼稚的方式进行这项工作,目前尚不清楚/不太可能做得更好。每个解码和未压缩的视频帧为2.25 MB。天真地讲-如果我们以约30 fps的速度播放视频,我最终将需要约60 MB / s的磁盘读取速度,这可能是不可能的。显然,我们必须进行某种程度的图像压缩(也许是通过PVRTC进行的本机openGL / es压缩格式)...但这有点疯狂。也许那里有一个我可以使用的图书馆? 理念7:将所有内容合并到一个电影资产中,然后seekToTime 一个比上面的方法更容易实现的想法是,将所有内容组合到一部电影中,并使用seekToTime。问题是我们会到处乱跳。本质上是随机访问电影。我认为这实际上可以解决:avplayer-movie-playing-lag-in-ios5 您认为哪种方法最好?到目前为止,在减少延迟方面我还没有取得太大进展。
115 ios  delay  avplayer 


1
AVPlayer和MPMoviePlayerController的区别[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 我正在开发一个需要播放视频的iPhone应用程序。到目前为止,我了解到至少有两个API可以实现此目的。AVPlayer和MPMoviePlayerController。 主要区别是什么?

5
没有AVPlayer代表吗?如何跟踪歌曲播放完毕的时间?目标C iPhone开发
我环顾四周,但找不到的委托协议AVPlayer class。是什么赋予了? 我正在使用其子类AVQueuePlayer来播放的数组AVPlayerItems,每个数组都是从URL加载的。歌曲播放完毕后,有什么方法可以调用方法?明显在队列末尾吗? 如果那是不可能的,那么在歌曲开始播放后,缓冲之后,有什么方法可以调用该方法吗?我正在尝试在其中添加一个加载图标,但是即使在[audioPlayer play]操作之后,它也会在音乐真正开始之前将其关闭。

10
知道何时可以播放AVPlayer对象
我正在尝试播放从上一个MP3传递到的文件(存储在变量中)。UIViewUIViewNSURL *fileURL 我正在初始化一个AVPlayer: player = [AVPlayer playerWithURL:fileURL]; NSLog(@"Player created:%d",player.status); 该NSLog打印Player created:0,我想通意味着它是还没准备好打。 当我单击该播放时UIButton,运行的代码是: -(IBAction)playButtonClicked { NSLog(@"Clicked Play. MP3:%@",[fileURL absoluteString]); if(([player status] == AVPlayerStatusReadyToPlay) && !isPlaying) // if(!isPlaying) { [player play]; NSLog(@"Playing:%@ with %d",[fileURL absoluteString], player.status); isPlaying = YES; } else if(isPlaying) { [player pause]; NSLog(@"Pausing:%@",[fileURL absoluteString]); isPlaying = NO; } else …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.