如何将积分从一台设备转换到另一台设备

问题描述 投票:0回答:1

设备1

设备2

设备 1 正在将视频源流式传输到设备 2。当我在视频层上方的视频容器视图层的顶部画一条线时,我想在第二个设备上与视频相关的同一位置重新绘制该线。显示出来的红色背景来自包含视频层的视图。视频层的contentsGravity设置为.resizeAspectFill。

我尝试转换点并重新绘制线条,但它已关闭。

var targetCoord = CGPoint()
        
targetCoord.x = originCoord.x / originScreenSize.width * targetScreenSize.width
targetCoord.y = originCoord.y / originScreenSize.height * targetScreenSize.height

如何考虑顶部间隙和侧面间隙(红色区域)的差异?将形状图层添加到缓冲区并发送到其他设备是不可行的,因为它很慢并且绘图需要双向。我很难理解它,如果有任何帮助,我将不胜感激!

swift coordinates avfoundation screen
1个回答
0
投票

首先,我需要使用

AVMakeRect(aspectRatio:insideRect)
获取适合视频的矩形并设置包含视频层的视图的框架,从而消除两个视图上的红色区域。这样点就会完全对应。

我对转换的想法是正确的,但我使用了错误的宽度和高度值。使用包含视频层的视图的大小,而不是使用屏幕大小。

var targetCoord = CGPoint()
       
targetCoord.x = originCoord.x / sourceViewSize.width * targetViewSize.width
targetCoord.y = originCoord.y / sourceViewSize.height * targetViewSize.height
© www.soinside.com 2019 - 2024. All rights reserved.