问题标签 [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.

0 投票
0 回答
59 浏览

ios - 收到带有意外值的 CMTime 参数

我正在尝试将 CMTime 值作为函数参数传递...我的函数如下所示:

所以我在某个地方打电话

如果我在那里打印thumbnailTime,我会看到在我的情况下的预期值很简单kCMTimeZerothumbnailTime.timeScale是 1,thumbnailTime.value是 0)

但是如果我time从函数内部打印,我会得到一个非常奇怪的值: time.value是 6089232256,time.timescale是 0。

我错过了什么?

0 投票
1 回答
3632 浏览

ios - Swift iOS -CMTimeMakeWithSeconds:警告:由于时间尺度非常低而引入了 -0.433 的错误

我正在使用 AVPlayer 播放视频。我跟着这个视频教程让我们构建那个应用程序

我使用 UISlider/scrubber 来配合视频的当前帧/时间。

我有一个 10.43 秒的视频,我使用快进功能将我带到最后。

视频走到了最后,但问题是滑块只能到达 10 秒点,我无法让它到达最后 0.43 秒。我收到以下警告消息:

在此处输入图像描述

滑块的值是在 中确定的player?.addPeriodicTimeObserver(),因此,当我按快进而不是滑块走到最后时,它会停止几个点(注意空白):

在此处输入图像描述

如何获得更准确的值,以便我的滑块可以一直滑动到最后?

0 投票
2 回答
992 浏览

ios - 哪些类型的 CMTime 无效?

kCMTimeInvalid 是无效的 CMTime,但是根据 Apple 文档,还有更多的无效 CMTime,它们是什么?CMTime“无效”是什么意思?它是溢出,未启动还是其他?

https://developer.apple.com/documentation/coremedia/kcmtimeinvalid

所有字段均为 0,因此您可以调用或填充 0 来生成大量字段。不要使用 (time == kCMTimeInvalid) 对此进行测试,除此之外还有许多 CMTimes 也是无效的。请改用 CMTIME_IS_INVALID(time)。


我发现了一些 CMTime 无效的情况:

  • 当 flags(CMTimeFlags) kCMTimeFlags_Valid 未设置时。

    kCMTimeFlags_Valid 必须设置,否则 CMTime 被视为无效。

  • CMTimeAdd的一些操作

+无穷大 + +无穷大 == +无穷大

  • -infinity + -infinity == -infinity
  • +infinity + -infinity == 无效
  • -infinity + +infinity == 无效

  • 0 投票
    1 回答
    186 浏览

    ios - 如何在 CMTimeMake 的时间刻度 Int32 中传递浮点数

    我正在研究 CMTimeMake,以便为视频添加慢动作和快动作效果。我们必须除以视频比例以获得快速效果,并乘以视频比例以获得慢速效果。

    这里是:

    现在根据我的要求,有一个滑块(介于 0.1 到 2.0 之间),用户将在其中为慢速和快速效果选择特定的视频比例值。该值以浮点数形式出现。

    我的问题是当我在上面的代码中传递像 0.8 这样的浮点值时,然后:

    let videoScaleFactor = Int64(0.8) // 这返回 0

    我怎样才能将精确值 0.8 返回到这个?请给我提意见。

    0 投票
    2 回答
    1451 浏览

    ios - 将 CMTime 值转换为 swift

    我有以下两行代码要迁移到 Swift,但我有点卡住了。

    将下面的行转换为开头时,出现以下错误。

    二元运算符“/”不能应用于“CMTimeScale”(又名“Int32”)和“Float”类型的操作数

    我尝试了几种不同的方法,但似乎没有任何效果。

    0 投票
    1 回答
    731 浏览

    ios - AVAssetWriter startSessionAtSourceTime 不接受 CMTIme 值

    我的应用程序旨在使用 Xcode 10.0 作为 IDE 录制视频并分析在 iOS 11.4 下生成的帧。使用 AVCaptureMovieFileOutput 成功录制视频,但需要分析过渡到 AVAssetWriter 的帧和 RosyWriter 之后的建模代码 [ https://github.com/WildDylan/appleSample/tree/master/RosyWriter ]。代码是用 ObjC 编写的。

    我在 captureOutput: didOutputSampleBuffer: fromConnection: delegate 中遇到问题。捕获第一帧后,使用从第一帧提取的设置配置 AVAssetWriter 及其输入(视频和音频)。一旦用户选择记录,捕获的 sampleBuffer 就会被分析和写入。我尝试使用 AVAssetWriter startSessionAtSourceTime: 但显然 CMSampleBufferGetPresentationTimeStamp 从样本缓冲区返回 CMTime 的方式有问题。sampleBuufer 日志似乎显示具有有效值的 CMTime。

    如果我实现: CMTime sampleTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); [self->assetWriter startSessionAtSourceTime: sampleTime] 生成的错误是 '*** -[AVAssetWriter startSessionAtSourceTime:] invalid parameter not compatible: CMTIME_IS_NUMERIC(startTime)' 。

    如果我使用 [self->assetWriter startSessionAtSourceTime:kCMTimeZero] 错误“警告:无法在进程中执行支持代码来读取 Objective-C 类数据。这可能会降低可用类型信息的质量。” 生成。

    当我记录 sampleTime 时,我读到 - value=0,timescale=0,epoch=0 & flags=0。我还记录了 sampleBuffer 并在下面显示,然后是相关代码:

    ==================================================== ==

    }

    0 投票
    2 回答
    1901 浏览

    swift - 收到致命错误:双精度值无法转换为 Int,因为它是无限的或 NaN

    该代码用于播客应用程序。

    选择要播放的播客时失败...导致音频播放,但应用程序冻结,直到重新启动。

    编辑:错误在线发生let totalSeconds = Int(CMTimeGetSeconds(self))

    0 投票
    2 回答
    99 浏览

    ios - 如何访问当前正在录制的视频的长度

    我有一个 iOS 相机应用程序,当用户开始按住一个按钮时,我想开始录制,并且在该 longTap 方法中能够知道录制当前持续了多长时间......在它结束之前。我想知道视频到现在为止的时长,或者换一种说法,用户已经录制了多长时间

    我的主要问题是如何在长按方法中知道用户录制了多长时间。因此,如果录音达到 X,它可以做 Y。

    我目前尝试过:

    视频录制的fileOutput方法中的以下内容(在用户让按钮后调用)

    确实开始录制我得到了视频的缩略图。你会看到一个 num 变量但忽略它......它总是会产生零,因为这是开始。

    LongTap 方法

    然而,我所拥有的是非常错误的。它几乎无法使用,绝对无法释放。

    谢谢你的帮助。

    0 投票
    1 回答
    269 浏览

    swift - 如何将 CMTime 存储在 UserDefaults 中然后解析它?

    好吧,我尝试在设备内存中记住 AVPlayer 中的 currentTime(),以便在应用重启后继续播放视频。

    我正在制作用于从我的 Raspberry PI 观看电影的应用程序。有任何想法吗?

    0 投票
    1 回答
    194 浏览

    swift - 如何在 Swift 4 中设置视频的偏移量?Seek(to:) 似乎不起作用

    我在设置 AVQueuePlayer 视频的偏移量时遇到问题。我已经尝试过 seek( 来设置视频的偏移量,但它似乎不起作用。视频总是从 0 秒开始。其他要求是通过控制播放它并循环播放,这些都可以正常工作。

    我很喜欢从 0 秒以外的任何其他时间播放视频。