在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,因为它有一些严重的限制。我希望能够一次回放多个视频流。
20条答案
按热度按时间rfbsl7qr1#
对于SWIFT 3和4
e37o9pze2#
此属性已在
AVAudioPlayer
中定义。希望这能对你有所帮助。我用的是Xcode6.3。q1qsirdb3#
使用AVPlayerViewController下面的代码,它对我很有效
所有控件都将显示,希望对您有所帮助
g6baxovj4#
SWIFT 5
xn1cxnb45#
SWIFT 4.2在Xcode 10.1中。
是,
AVKit
/AVFoundation
中有一种相对简单的方法,使用AVQueuePlayer()
、键值观察(KVO)技术和令牌来循环视频。这绝对适用于一系列H.264/HEVC视频,并且对CPU的负担最小。
下面是一个代码:
hof1towb6#
我所做的是让它循环播放,如下面的代码所示:
8fq7wneg7#
以下是SWIFT 4.1中WKWebView的主要部分WKWebView配置中的WKWebView,适用于我
nkcskrwz8#
您可以添加一个AVPlayerItemDidPlayToEndTimeNotification观察器,并在选择器中从开始重放视频,代码如下
1cklez4t9#
将视频加载到AVPlayer(当然是通过其AVPlayerItem)后:
AddDidPlayToEndTimeNotificationForPlayerItem方法:
在您的view WillDis现方法中:
在实现文件内的视图控制器的接口声明中:
在你尝试之前,需要先看看它的启动和运行情况吗?下载并运行此示例应用程序:
Https://developer.apple.com/library/prerelease/ios/samplecode/AVBasicVideoOutput/Listings/AVBasicVideoOutput_APLViewController_m.html#//apple_ref/doc/uid/DTS40013109-AVBasicVideoOutput_APLViewController_m-DontLinkElementID_8
在我的应用程序中,它使用的正是这段代码,在视频的结尾和开头之间没有任何停顿。事实上,根据视频的不同,除了时间码显示之外,我无法判断视频是从头开始的。
9gm1akwq10#
我在答案中找不到我的解决方案。观察指定给资产期限的边界时间可能会很有帮助。当观察者被触发时,寻求开始并重播。
sshcrbum11#
当玩家结束时,你可以得到一个通知。检查
AVPlayerItemDidPlayToEndTimeNotification
设置播放器时:
Objc
这将防止玩家在结束时停顿。
在通知中:
这将使电影倒带。
别忘了在释放玩家的时候取消注册通知。
SWIFT
SWIFT 4+
zqdjd7g912#
我在Objective中的解决方案--使用AVQueuePlayerc--似乎必须复制AVPlayerItem,并在完成第一个元素的回放后立即添加另一个副本。“有点”说得通,而且对我来说没有任何问题。
https://gist.github.com/neonm3/06c3b5c911fdd3ca7c7800dccf7202ad
ej83mcc013#
这对我来说很有效,没有打嗝的问题,要点是在调用earkToTime方法之前暂停播放器:
1.初始化AVPlayer
1.登记通知
1.Video oLoop函数
0pizxfdo14#
SWIFT 5:
r8xiu3jd15#
为了避免视频倒带时的间隙,在一个构图中使用同一资源的多个副本对我来说效果很好。我在这里找到了它:www.developers-life.com/avplayer-looping-video-without-hiccupdelays.html(链接现已失效)。