首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在swift项目中使用VideoPlayer

在swift项目中使用VideoPlayer
EN

Stack Overflow用户
提问于 2017-08-08 00:22:05
回答 3查看 63关注 0票数 0

我正在尝试在单元格中显示视频。相反,它只是作为一个黑盒出现。有可能没有初始化播放器。但是,我确实看到了黑框,所以我知道它正在初始化VideoPlayerView。当我打印playerLayer的帧时,它打印(0.0,0.0,0.0,0.0),可能是由于我初始化视图的方式。有没有办法在不使用frame的情况下将playerlayer扩展到视图的边缘?

代码语言:javascript
运行
AI代码解释
复制
class VideoPlayerView : UIView {

override init(frame: CGRect) {
    super.init(frame: frame)

    backgroundColor = UIColor.black

    let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
    let player = AVPlayer(url: videoURL!)

    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = self.bounds
    //print(playerLayer.frame)

    self.layer.addSublayer(playerLayer)

    player.play()
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

}

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2017-08-08 04:27:54

我尝试了几种不同的方法,最后使用了一个自定义的UIView类方法(就像您一样),但有一些不同之处。例如,您的类可能如下所示:

代码语言:javascript
运行
AI代码解释
复制
class PlayerView: UIView {
    var player: AVPlayer? {
        get {
            return playerLayer.player
        }
        set {
            playerLayer.player = newValue
        }
    }

    var playerLayer: AVPlayerLayer {
        return layer as! AVPlayerLayer
    }

    // Override UIView property
    override static var layerClass: AnyClass {
        return AVPlayerLayer.self
    }
}

然后,在IB中添加一个UIView,将类设置为PlayerView (而不是默认的UIView),添加像normal这样的约束,并像其他控件一样将一个插座拖到控制器上。要使用它,请执行以下操作:

代码语言:javascript
运行
AI代码解释
复制
playerView.player = AVPlayer(url: url)
playerView.playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill

然后在您的应用程序需要时触发Play命令。

您可以使用相同的方法动态创建此视图,但我倾向于大多数时间使用IB。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2017-08-08 00:26:12

您可以将约束设置为playerLayer,例如:

代码语言:javascript
运行
AI代码解释
复制
let width = UIScreen.main.bounds.width
let height = 300

let playerLayer = AVPlayerLayer(player: player)
playerLayer.translatesAutoresizingMaskIntoConstraints = false
playerLayer.widthAnchor.constraint(equalToConstant: width).isActive = true
playerLayer.heightAnchor.constraint(equalToConstant: height).isActive = true
票数 0
EN

Stack Overflow用户

发布于 2017-08-08 04:48:27

我想你所需要做的就是添加下面的代码:

当你调整大小时,它不会自动调整图层大小。

代码语言:javascript
运行
AI代码解释
复制
override func layoutSublayers(of layer: CALayer) {
    super.layoutSublayers(of: layer)
    playerLayer?.frame = self.bounds
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45557468

复制
相关文章
R中的替换函数gsub
其中pattern是要替换的字符,replacement是替换成的字符,x是对应的string或string vector。
生信交流平台
2022/09/21
3.4K0
R中的替换函数gsub
Rust中的模式匹配
在其它一些语言中,let x = 5 之类的语句,仅仅只是赋值语句。但是在rust中,可以换个角度理解,认为5这个值匹配到了x变量。如果觉得有些牵强,可以再来一个示例:
菩提树下的杨过
2021/11/30
1.9K0
Rust中的模式匹配
Swift中的模式匹配
Swift 作为一门现代语言,除去安全,快速等特性之外,还有个明显有别于其他语言的特性,就是巨量细致入微的语言特性。类似iOS API,初学者觉得繁杂,无从下手,但是熟悉之后,绝对能少写不少代码。
小刀c
2022/09/21
1.8K0
less中的匹配模式
首先来看如下的代码,一个 div 元素,分别设置了上下左右的宽度高度和颜色,然后在浏览器中打开发现四个不同的角都是一个小小的三角形如下
程序员NEO
2023/09/29
2820
less中的匹配模式
LeetCode - 查找和替换模式
原题地址:https://leetcode-cn.com/problems/find-and-replace-pattern/
晓痴
2019/07/30
8760
【R语言】根据映射关系来替换数据框中的内容
前面给大家介绍过☞R中的替换函数gsub,还给大家举了一个临床样本分类的具体例子。今天我们接着来分享一下如何根据已有的映射关系来对数据框中的数据进行替换。例如将数据框中的转录本ID转换成基因名字。我们直接结合这个具体的例子来进行分享。
生信交流平台
2022/09/21
4.2K0
【R语言】根据映射关系来替换数据框中的内容
CAN通信的数据帧和远程帧「建议收藏」
(先来一波操作,再放概念) 远程帧和数据帧非常相似,不同之处在于: (1)RTR位,数据帧为0,远程帧为1; (2)远程帧由6个场组成:帧起始,仲裁场,控制场,CRC场,应答场,帧结束,比数据帧少了数据场。 (3)远程帧发送特定的CAN ID,然后对应的ID的CAN节点收到远程帧之后,自动返回一个数据帧。
全栈程序员站长
2022/07/23
6.9K0
CAN通信的数据帧和远程帧「建议收藏」
Python3.10中的模式匹配
Python 3.10 版本还在开发之中,目前释出的 dev 版本实现了新语法特性 Structural Pattern Matching(PEP 634):可以利用match语句和case语句匹配对象的不同 模式,并应用不同的行为。
杜逸先
2021/06/09
1.5K0
C# 8.0 中的模式匹配
多年来,我们在 C# 中实现了许多功能,不仅改善了代码的性能,更重要的是还提高了代码的可读性。鉴于软件行业的快速发展,语言当然需要与其用户群同步发展。广泛用于 Haskell、Swift 或 Kotlin 等各种编程语言的某些功能,有时也会用于 C#。其中一个功能就是模式匹配,这一概念已经存在很长时间,是 .NET 领域中的许多开发人员一直期待的功能。
AI.NET 极客圈
2019/08/16
1.9K0
详解CAN总线:标准数据帧和扩展数据帧
CAN协议可以接收和发送11位标准数据帧和29位扩展数据帧,CAN标准数据帧和扩展数据帧只是帧ID长度不同,以便可以扩展更多CAN节点。
不脱发的程序猿
2022/10/04
10.9K0
详解CAN总线:标准数据帧和扩展数据帧
视频中的 I 帧,P 帧,B 帧
视频传输原理 视频是由一幅幅帧图像和一组音频构成的,视频的播放过程可以简单理解为一帧帧的画面按照时间顺序呈现出来的过程。但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大。这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理。 编码器将多张图像进行编码后生产成一段一段的 GOP ( Group of Pictures ) 如下图, 解码器在播放时则是读取一段一段的 GOP 进行解码后读取画面再渲染显示。GO
用户1097444
2022/06/29
3.8K0
视频中的 I 帧,P 帧,B 帧
JavaScript 替换所有匹配内容
由于JavaScript 的 replace 只能替换一次,因此另外编写一个能现替换全部匹配内容方法,代码如下:
用户1289394
2021/10/13
1.8K0
python用re.sub实现分组匹配和替换(及问答系统中的应用)
关于正则表达式替换,前面我写过一个应用: python2代码搬运到python3要改很多print? 试试用pyCharm的正则表达式替换 其实这里的替换已经使用了分组的思
blmoistawinde
2019/10/30
4.1K0
Scala 高阶(九):Scala中的模式匹配
本次主要分享Scala中关于模式匹配的内容,Scala中的模式匹配类似于Java中的switch语法,但是Scala在基于Java的思想上补充了特有的功能。
百思不得小赵
2022/12/01
1.6K0
(数据科学学习手札49)Scala中的模式匹配
  Scala中的模式匹配类似Java中的switch语句,且更加稳健,本文就将针对Scala中模式匹配的一些基本实例进行介绍:
Feffery
2018/09/07
7670
《搜索和推荐中的深度匹配》——2.2 搜索和推荐中的匹配模型
当应用于搜索时,匹配学习可以描述如下。一组查询文档对D=(q1​,d1​,r1​),(q2​,d2​,r2​),...,(qN​,dN​,rN​)作为训练数据给出,其中 i 和 qi​,di​和ri​(i=1,...,N)分别表示查询,文档和查询文档匹配度(相关性)。每个元组 r)∈D的生成方式如下:查询q根据概率分布P(q)生成,文档d根据条件概率分布P(d∣q)生成,并且相关性r是根据条件概率分布 P(r∣q,d)生成的。这符合以下事实:将query独立提交给搜索系统,使用query words检索与query关联的文档,并且文档与query的相关性由query和文档的内容确定。带有人类标签的数据或点击数据可以用作训练数据。
小爷毛毛_卓寿杰
2021/09/10
1.5K0
数据结构- 串的模式匹配算法:BF和 KMP算法
1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。
黄规速
2022/04/14
4290
数据结构- 串的模式匹配算法:BF和 KMP算法
R包更新过程中readr和cli不匹配
下面是学员解决问题的记录 (生信技能树学员 ) 自我介绍:我是一名儿科医生。硕士毕业工作已有十年的时候,在职博士还没有毕业方向,觉得生信学习或许是一个新的出口,于是跟随生信技能树的马拉松课程学习了数据挖掘,也学习了一些Linux的基础知识。一边忙碌的临床工作,一边挤时间学习这从未接触过的领域,到如今刚好一年,结合部分临床实验数据、数据挖掘生物信息分析等内容,终于完成了毕业论文的撰写。目前博士论文刚刚通过盲审评阅,等待着毕业收尾工作。非常感谢生信技能树的各位老师。 💡当你开始学习生信时,一定会遇到各种报
生信技能树
2022/06/08
3.4K0
R包更新过程中readr和cli不匹配
LeetCode-890-查找和替换模式
你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。
benym
2022/07/14
4160
R中字段抽取、字段合并、字段匹配
1、字段抽取 字段抽取,是根据已知列数据的开始和结束位置,抽取出新的列 字段截取函数:substr(x,start,stop) tel <- '18922254812'; #运营商 band <- substr(tel, 1, 3) #地区 area <- substr(tel, 4, 7) #号码段 num <- substr(tel, 8, 11) tels <- read.csv('1.csv'); #运营商 bands <- substr(tels[,1], 1, 3) #地区 areas <-
Erin
2018/01/09
5.5K0

相似问题

检查数字并删除前导零

51

将dataframe列写入具有前导零的csv

74

熊猫检查栏并添加前导零

30

Python:如何使用dataframe.to_csv保持前导零

14

如何在mysql中检查带有前导零的varchar

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档