- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我看过一些examples of CMTime (三个单独的链接),但我还是不明白。我将 AVCaptureSession 与 AVCaptureVideoDataOutput 一起使用,我想设置输出的最大和最小帧速率。我的问题是我只是不理解 CMTime 结构。
显然 CMTimeMake(value, timeScale) 应该每 1/timeScale 秒给我一个值帧,总共 value/timeScale 秒,还是我弄错了?
为什么没有在任何地方记录它以解释它的作用?
如果它确实能像那样工作,我如何让它拥有无限数量的帧?
如果它真的很简单,我很抱歉,但还没有点击。
最佳答案
CMTime
结构表示存储为有理数的时间长度(参见 CMTime Reference )。 CMTime
有一个value
和一个timescale
字段,代表时间value/timescale seconds
。
CMTimeMake
是一个返回CMTime
结构的函数,例如:
CMTime t1 = CMTimeMake(1, 10); // 1/10 second = 0.1 second
CMTime t2 = CMTimeMake(2, 1); // 2 seconds
CMTime t3 = CMTimeMake(3, 4); // 3/4 second = 0.75 second
CMTime t4 = CMTimeMake(6, 8); // 6/8 second = 0.75 second
最后两个时间值t3
和t4
表示相同的时间值,因此
CMTimeCompare(t3, t4) == 0
如果您设置 AVCaptureSession
的 videoMinFrameDuration
是没有区别的,如果您设置
connection.videoMinFrameDuration = CMTimeMake(1, 20); // or
connection.videoMinFrameDuration = CMTimeMake(2, 40);
在这两种情况下,帧之间的最小时间间隔都设置为 1/20 = 0.05 秒。
关于ios - 试图了解 CMTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12902410/
我理解CMTime的概念以及它的作用。简而言之,我们有非常小的秒数表示为浮点数。添加后,它们会累积一个错误,随着解码/播放的进行,该错误变得很重要。例如求和一百万次0.000001给我们 1.0000
我想使用类 AVPlayer 的 Seek 方法。但是这个方法需要一个参数 CMTime。任何人都知道这个对象。 为了将播放光标移动到给定的时间。 最佳答案 Apple 文档包含有关 CMTime s
我正在编写一个使用 AVFoundation 和 CMTime 的应用程序。我已经记录了使用 CMTimeMake() 创建的 CMTime 实例的值。该值似乎四舍五入为最接近的整数。我需要一个具有精
我看过一些examples of CMTime (三个单独的链接),但我还是不明白。我将 AVCaptureSession 与 AVCaptureVideoDataOutput 一起使用,我想设置输出
我一直在查看与创建 CMTime 相关的文档。所有函数(CMTimeMake()、CMTimeMakeWithSeconds() 等)都采用名为 preferredTimeSale 的第二个参数。 有
我之前使用过 Core Data 的可转换属性,但没有使用过 C 对象,例如 CMTime。 我需要使用可转换在核心数据上存储 CMTime。 在模型对象上,我已将其声明为可转换的。 @propert
func addPeriodicTimeObserver(forInterval interval: CMTime, queue: DispatchQueue?, using block: @esca
CMTimeMake 没有给我预期的结果。以下代码: CMTime testTime = CMTimeMake(0, 30); NSLog(@"testTime w/ input 0, 30: val
我希望 CMTime 为人类可读的字符串。 所以我找到了下面的代码。 extension CMTime { var durationText:String { let tota
我正在创建一个应用程序,我必须在其中混合歌曲。我已经完成了这个,但问题是当我使用以下函数时。 - (BOOL)insertTimeRange:(CMTimeRange)timeRange ofTrac
我有一个小整数值,我想将它转换成 CMTime。 问题是 CMTime(value: _ , timeScale: _) 或 CMTimeMakeWithSeconds(value: _ , time
如何将当前播放时间增加 5 秒? 实际上这是我的代码: CMTime currentTime = music.currentTime; 我不能使用 CMTimeGetSeconds() ,因为我需要
这可能看起来很荒谬,但是如何在 Objective-C 中将 CMTime 的秒数输出到控制台?我只需要将该值除以时间刻度,然后以某种方式在控制台中看到它。 最佳答案 NSLog(@"seconds
我很难理解如何使用 AVAssetWriter 将 30fps 的运动 JPEG 流转换为视频文件。我没有得到的部分是[适配器 appendPixelBuffer:buffer withPresent
我有一个 AVPlayer,我想在 11.593 秒的特定时间开始播放。我从 URL 字符串中检索到这个数字(以毫秒为单位),将其转换为 Double,然后转换为 CMTime,如下所示: http:
我有一个 iPhone 摄像头附件,可以以 9FPS 的速度捕捉视频,并将其作为单独的 UIImages 提供。我正在尝试将这些图像拼接在一起,以使用 AVFoundation 创建相机所见内容的延时
1) CMTimeMake(1,10) 表示持续时间为 1 秒,时间刻度为 10,即每秒 10 帧。这意味着 10 帧的视频持续时间为 1 秒? 2) CMTime lastTime=CMTimeMa
我有以下 2 行代码正在迁移到 Swift,但我有点卡住了。 CMTime trimmingTime = CMTimeMake(lround(videoAsset.naturalTimeScale /
我有一个 AVQueuePlayer,我正在尝试在按下按钮时向后搜索 5 秒。 我的代码如下: func seekBack() { guard let currentTime = self.p
我正在尝试使用 AVFoundation 播放视频。我将以下代码用于将播放推进一帧的按钮。 它间歇性地工作,在某些执行中它会做正确的事情并前进一帧,但大多数时候我必须按下按钮 3 或 4 次才能前进一
我是一名优秀的程序员,十分优秀!