问题标签 [cmtime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 将 CMTime 转换为字符串是错误的值返回
我想CMTime
字符串一个人类可读的。
所以我找到了下面的代码。
我有30 second
视频文件。它的CMTime
价值是17945
。
我期待这个 durationText 00:30
。
但结果是00:29
。
和其他视频文件一样。
我应该修什么??
swift - 使用自定义开始/结束时间循环 AVPlayer
我正在使用 AVPlayer 播放视频。我希望能够根据用户的输入循环播放视频的各个部分(在播放视频时,用户可以按下按钮开始循环,然后在几秒钟后再次按下以结束 - 然后它应该从开始时间开始播放,并在当前时间到达指定的结束时间后继续循环)
我可以通过获取玩家的 currentTime 来获取这些开始/结束循环时间
我知道有一种方法可以在完成播放后将视频干净地循环回到开头,如下所示:
我想知道是否有办法用我的自定义 startLoop 和 endLoop 时间来做到这一点?
avfoundation - 使用 CMTimeAdd 从不同时间检索像素缓冲区?
我目前正在使用 aCADisplayLink
从AVPlayerItemVideoOutput
. 显示链接是这样更新的;
我想用同样output
的方法提前 1 秒抓取一个像素缓冲区。由于我的视频是 30fps,我想我可以CMTimeMakeWithSeconds
用来做以下事情;
当我尝试这样做,然后执行我...
的后期处理时,我体验到的回放非常不稳定。如果我let timeB = time
只是为了测试而设置的话,我的后期处理和播放就恢复了正常和流畅。
是否有任何解释为什么这种方法不起作用或更有效
ios - 尝试以预期的帧速率将 CVPixelBuffers 附加到 AVAssetWriterInputPixelBufferAdaptor
我正在尝试以预期的帧速率将 CVPixelBuffers 附加到 AVAssetWriterInputPixelBufferAdaptor,但它似乎太快了,而且我的数学已经关闭。这不是从相机捕捉,而是捕捉变化的图像。实际视频比捕获它的经过时间快得多。
我有一个函数每 1/24 秒附加一次 CVPixelBuffer。所以我试图在最后一次添加 1/24 秒的偏移量。
我试过了:
和:
和:
我添加到 currentSampleTime 并像这样附加:
我想到的另一种解决方案是获取上次时间和当前时间之间的差异,并将其添加到 currentSampleTime 以确保准确性,但不确定如何执行。
ios - 如何在 AVCaptureDevice 上准确设置快速快门速度(曝光时间)?
我正在为 IOS (13) 开发相机应用程序。为此,我将 AVCaptureSession 与 AVCaptureVideoPreviewLayer 结合使用。到目前为止一切正常。
现在我想让用户从给定的典型快门速度值数组(以 1/3 曝光停止)中选择并设置自定义快门速度(曝光持续时间)作为 [Int32]:
我将所需的曝光设置为 - 据我所知 - 只有以下功能的可能方式:
检查 AVCaptureDevice 的 exposureDuration 值表明,这可以为较慢的快门速度(高达 1/200 秒)提供完全准确的结果。选择的曝光持续时间越快,差异越大。例如:
我了解标称快门速度(对用户更方便的四舍五入的近似数字)与相机使用的精确实际快门速度之间存在差异(请参阅https://www.scantips.com/lights/fstop2. html ). 后者彼此之间的差异恰好是相邻光圈的 2 倍或 1/2 曝光(这将是 1/2、1/4、1/8、1/16、1/32、1/64 等值, 1/128, 1/256, 1/512, 1/1024, ..., 1/4096, ..., 1/8192...)。然而,这仍然不能解释我在更快的快门速度下得到的这些极端差异。
我还尝试像这样明确设置(随机)快速快门速度:
或这个
但两者仍然导致曝光持续时间为 1/12048(而不是 1/10000)...
我是否遗漏了与 CMTime 相关的内容,这与视频的帧速率有关(尽管更改 captureDevice 的 activeVideoMinFrameDuration 和 activeVideoMaxFrameDuration 没有任何效果)还是根本不可能设置完全自定义的曝光持续时间?
顺便提一句。我在尝试实现一个功能时遇到了同样的问题,该功能应该允许用户在(连续)自动曝光模式下定义最小快门速度(为此我使用了 captureDevice 的 activeMaxExposureDuration 函数)......
任何想法或提示将不胜感激。
ios - AVAssetWriter 将图像写入 mp4 文件,但文件内容只有一半
我想将窗口的快照记录到 macOS 应用程序中的 mp4 文件中。
- 使用函数启动创建者
[aMp4CreaterEntity startRecordWithSize:CGSizeMake(2320, 1080) pixelType:kCVPixelFormatType_32ARGB]
- 每秒运行计时器 15 次,对窗口进行快照,使用函数
CGWindowListCreateImage
获取CGImageRef
宽度 = 2320 和高度 = 1080, - 调用创建函数
[aMp4CreaterEntity recordImage:theCGImageRef timeStamp:[[NSDate date] timeIntervalSince1970]]
发送CGImageRef
到我的aMp4CreaterEntity
- 调用
[aMp4CreaterEntity stopRecord]
函数,并在
一切运行正常,除了mp4 文件的内容只包含之前发送的内容的一半,并且最后的内容丢失了。当我调试时,每一个CVPixelBufferRef
都是附加的。AVAssetWriterInputPixelBufferAdaptor
一开始我认为CMTime设置错误,但修改为half或double后,错误是continue。
我是音频和视频的新手,有人可以帮我解决这个问题或详细解释一下吗?
顺便说一句:我同时在另一个文件中录制音频,但它有同样的问题 - 早期的一半内容。我可以直接阅读 swift 代码。
这是我使用 Objective-C 的记录器示例代码。
swift - 将视频 url 定义为班级中的 uiview
我的快速代码应该能够拍摄视频的快照,然后拍摄该图像并显示在 uiimageview 中。而不是使用在线链接,我只希望 url 成为我班级中的 uiview。所以视频 url 应该是 previewView 而不是我下面的 https 链接。下面的所有代码都在这个类中
ios - 是否有每秒获取 10 帧视频的功能?
我正在尝试从imagePickerController
. 我使用这个功能,但从 0.1s -> 1s 的图像是相同的,从 1.1 到 2s 也是。有什么办法吗?这是我的功能:
还是我需要提高视频质量?感谢帮助。
ios - 使用 Swift 的 plist 中 CMTime 和 CMTimeRange 的现代方式
在 plist 中存储 CMTime 和 CMTimeRange 等对象的最“现代”Swift 方法是什么?我尝试了以下方法。字典对象存储在 plist 中。
并且,
有人指出,第一种方法的问题是 NSValue 更像是 Objective-C 类型的东西,需要先存档,然后才能将其存储在 plist 中。第二种方法是基于字典的方法,其中 timeRange 存储为 CFDictionary 但与 plist 兼容,无需存档。但离 Swift 更远的是 CFDictionary!
那么使 CMTimeRange 属性列表可序列化的现代方法是什么?