如何AVPlayerLayer在方法中显示精确视频的帧seekToTime.
现在[AVPlayer seekToTime:CMTimeMakeWithSeconds(CMTimeGetSeconds(A, B))],AVPlayerLayer仅在每1秒更改一次显示帧,例如1.50-2.50-3.50.我希望它以4.45秒的速度显示帧.可能吗?
我正在使用其中AVPlayer显示正在播放的视频URL。它分为两个部分:
1.首先,我已经嵌入AVPlayer使用的视图的子层AVPlayerLayer,即
var player: AVPlayer?
func configure() {
let urlString = "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
if let url = URL(string: urlString) {
self.player = AVPlayer(url: url)
let playerLayer = AVPlayerLayer(player: self.player)
playerLayer.frame = self.view.bounds
self.view.layer.addSublayer(playerLayer)
player.play()
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,正在播放视频。
2.其次,在UIButton水龙头上,我将AVPlayerViewController使用与AVPlayer我先前创建的实例相同的实例,即
@IBAction func onTapVideoButton(_ sender: UIButton) {
self.player?.pause()
let controller = AVPlayerViewController()
controller.player = self.player
self.present(controller, animated: true) {
self.player?.play()
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里面临的问题是,AVPlayerViewController打开后,视频停止播放,但音频仍在播放。
我要在和中同步视频。 …
我有一个NSView像这样的in接口构建器:

我在视图(videoView)内部有按钮和标签,用于控制视频的播放。当我AVPlayerLayer像这样向视图添加(myPlayerLayer)时:将
self.videoView.layer?.addSublayer(myPlayerLayer)
其添加AVPlayerLayer为顶层,从而覆盖按钮。如何将播放器图层添加到背面,使其不覆盖其他任何内容?
非常感谢。
我正在使用AVPlayer播放视频,该视频在我的应用中约为320x200帧。avplayer还具有一个自定义的“全屏”按钮作为叠加层添加,例如youtube应用程序播放器。如何实现该功能,以便当应用程序处于纵向模式且用户单击全屏按钮时,视频将旋转至全屏但处于横向模式?我尝试使用transform,但它部分起作用,因为当处于全屏模式时,如果用户将设备切换为纵向模式;avplayer框架突然改变。我希望它能像youtube应用一样工作,即在全屏模式下,即使用户旋转设备,它也应保持不变。全屏关闭时,仅应恢复原始大小。由于应用程序的设计,我不想使用avplayerviewcontroller。在此先感谢您的帮助。
我不知道如何将视频旋转 90 度AVPlayerViewController,有人知道如何做到这一点吗?我不确定如何AVPlayerLayer像往常一样访问。
我正在尝试使用AutoLayout设置在视图中显示的视频的大小/帧。但是我不知道该怎么做。这是我认为的代码:
import UIKit
import AVKit
class VideoMeetingView: UIView {
lazy var playerLayer: AVPlayerLayer = {
let layer = AVPlayerLayer()
return layer
}()
private lazy var videoView: UIView = {
let view = UIView()
view.translatesAutoresizingMaskIntoConstraints = false
view.backgroundColor = .blue
return view
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = #colorLiteral(red: 0.5725490451, green: 0, blue: 0.2313725501, alpha: 1)
self.addSubviewsAndConstraints()
playerLayer.frame = videoView.bounds
videoView.layer.addSublayer(playerLayer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func addSubviewsAndConstraints() {
self.addSubview(videoView) …Run Code Online (Sandbox Code Playgroud) 我想使用 AVPlayer 镜像(翻转)视频播放。喜欢:MirrorTube:- https://chrome.google.com/webstore/detail/mirrortube/olomckflnlligkboahmaihmeaffjdbfm/lated?hl=en
我想实现相同的功能。
我尝试更改 CGAffineTransform 但效果不一样。
提前致谢!
我正在播放由AVCapture录制的录制视频.我将视频URL保存在名为outputFileURL的字符串中.我尝试使用AVPlayerLayer概念播放视频.我用的代码是
AVPlayer *avPlayerq = [AVPlayer playerWithURL:outputFileURL];
avPlayerq.actionAtItemEnd = AVPlayerActionAtItemEndNone;
AVPlayerLayer *videoLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayerq];
videoLayer.frame= self.view.bounds;
[self.view.layer addSublayer:videoLayer];
[avPlayerq play];
Run Code Online (Sandbox Code Playgroud)
但我得到的视频不是全屏.任何人都可以帮我解决?
我正试图在登录屏幕上显示视频,如Spotify等应用程序所示.
我在做什么
要做到这一点,我正在使用AVPlayer:
self.videoPlayer = AVPlayer(playerItem: item)
self.videoView.player = self.videoPlayer
self.videoPlayer.play()
Run Code Online (Sandbox Code Playgroud)
该videoView是描述一个自定义UIView类在这里.
我将AVLayer的videoGravity设置为AVLayerVideoGravityResizeAspectFill:
self.videoView.playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
Run Code Online (Sandbox Code Playgroud)
问题
但是,当我尝试填写视图边界时,我的视频仍然是letterboxed:
我想要的是
我想要的是让视频填满整个边界,没有任何黑条.我不在乎视频的一部分是否被剪裁:
附加信息
当我查看已弃用的MPMoviePlayerController的缩放模式属性时,我找到了aspectFill属性的以下描述:
均匀缩放影片,直到影片填充视图的可见边界.剪切两个尺寸中较大尺寸边缘的内容,使另一个尺寸精确地适合视图.保留电影的宽高比
从这个描述来看,这是我想要的确切行为.但是,正如已经说明的那样,我的视频得到了信箱.我做错了还是Apple停止支持这种缩放?如果我不关心被剪辑的部分视频,我是否必须自己实施此缩放?
感谢任何帮助,谢谢.
有人知道如何使用 AVPlayer 设置视频帧的圆角吗?我正在尝试这样做:
- (void)loadVideoWithPlayer:(AVPlayer*)playerVideo
{
dispatch_async(dispatch_get_main_queue(), ^{
AVPlayerLayer *avLayer = [AVPlayerLayer playerLayerWithPlayer: playerVideo];
[avLayer setCornerRadius:20];
[avLayer setMasksToBounds:YES];
[self.playerViewController setPlayer:playerVideo];
[self insertSubview:self.playerViewController.view belowSubview:self.interactView];
[self.playerViewController.player play];
});
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我无法设置圆角,AVPlayer.playerViewController.view因为视频帧可能不同。
我有以下代码行,旨在防止子层显示在另一个帖子内容上的问题。在用户退出帖子时调用该行被激发的方法。
newBaseP3FolderLayer.layer.sublayers?.remove(at: 1)
Run Code Online (Sandbox Code Playgroud)
但现在,我认为由于这段代码,在某些情况下,另一个视频会突然覆盖所有其他图像。
我注意到,只有当子层数为 14 时才会发生这种情况。(对于上面的数字也可能如此)在离开帖子时打印子层数时,我注意到代码运行良好(对于像 10 或 11 这样的值和12)直到子视图数达到14。
我怎样才能解决这个问题?
avplayerlayer ×11
avplayer ×9
ios ×8
swift ×5
video ×2
avkit ×1
cocoa ×1
cornerradius ×1
frame ×1
iphone ×1
layer ×1
mirroring ×1
nsview ×1
objective-c ×1