问题标签 [cmsamplebufferref]
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.
ios - 调整由 captureStillImageBracketAsynchronouslyFromConnection:withSettingsArray:completionHandler 提供的 CMSampleBufferRef 的大小:
在我正在开发的应用程序中,我们正在拍摄需要具有 4:3 纵横比的照片,以最大限度地扩大我们拍摄的视野。到目前为止AVCaptureSessionPreset640x480
,我们一直在使用预设,但现在我们需要更大的分辨率。
据我所知,仅有的另外两种 4:3 格式是 2592x1936 和 3264x2448。由于这些对于我们的用例来说太大了,我需要一种方法来缩小它们。我研究了一堆选项,但没有找到一种方法(最好不复制数据)以有效的方式执行此操作而不会丢失 exif 数据。
vImage
是我调查的事情之一,但据我所知,需要复制数据并且 exif 数据会丢失。UIImage
另一种选择是从 提供的数据创建一个jpegStillImageNSDataRepresentation
,对其进行缩放并取回数据。这种方法似乎也剥离了 exif 数据。
这里的理想方法是直接调整缓冲区内容的大小并调整照片的大小。有谁知道我会怎么做?
ios - 保留 CMSampleBufferRef 会导致随机崩溃
我正在使用captureOutput:didOutputSampleBuffer:fromConnection:
以跟踪帧。对于我的用例,我只需要存储最后一帧并在应用程序进入后台时使用它。
这是我的代码示例:
问题是,在某些情况下,我从内部得到了这个崩溃imageFromSampleBuffer
:
崩溃发生在CGImageRef quartzImage = CGBitmapContextCreateImage(con);
我究竟做错了什么?
ios - 当前帧的 AVAssetReader/AVAssetWriter 预览
我正在使用AVAssetReader/AVAssetWriter
在 iOS 上转换我的视频。我的问题是:通过实时转换显示当前帧预览的最有效方法是什么。我正在考虑转换CMSampleBufferRef
为 UIImage,然后应用到 UIImageView。它有什么更好的方法吗?
objective-c - 委托回调中的 CMSampleBufferRef 参数为空
我正在使用这段代码来创建 AVCaptureSession,但是当-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
被调用时,sampleBuffer 大小为 0
我的方法有什么问题吗?有没有可能这个错误可能在其他地方?我正在使用 ARC。
编辑 缓冲区不是空的,但它立即被释放。通过保留缓冲液解决。谢谢
avfoundation - CMSampleBufferGetSampleTimingInfo:没有持续时间?
我有一个直播,并CMSampleBufferGetSampleTimingInfo
给出了CMTime(value=0, timescale=0)
视频的持续时间。
对于音频,我一次获得 1024 个样本,但为样本CMSampleBufferGetSampleTimingInfo(sampleBuffer, index, &timingInfo)
中的每个索引提供完全相同的presentationTimeStamp。
如何在视频帧的实时流中准确获取持续时间信息,以及如何获取音频样本的实际时间CMSampleBufferRef
?
ios - iOS中的方形视频输出
AVFoundation
有没有办法在iOS中获得方形视频输出?
我使用 OpenGL 来处理CMSampleBuffer
视频的每一帧()。每一帧
都是旋转的,所以我需要裁剪和旋转CMSampleBuffer
。但我不知道该怎么做,所以我相信有一种方法可以通过videoSettings
在AVCaptureVideoDataOutput
.
我用谷歌搜索,谷歌搜索并搜索它,但一无所获。swift中的代码示例会很棒。
更新:
我在 Swift 中的完整最终解决方案:
它对我来说是完美的镜像和旋转视频输出!但它不是裁剪!
objective-c - 写入静默 CMSampleBuffer 会导致崩溃:CrashIfClientProvidedBogusAudioBufferList
我正在使用 AVAssetwriter 录制视频/音频,并希望能够编写静音样本缓冲区。我在 CoreAudio 方面没有那么有经验,所以我很难想出一个可行的解决方案。
这个想法是在音频设备断开连接时继续录制视频,直到重新连接。问题是,AVFoundation 以某种方式将音频推到前面,因此生成的电影文件大量不同步。
我当前的实现尝试创建一个空/静音 CMSampleBuffer 以放置在没有连接音频设备的段之间。
顶部的 sampleBuffer 是音频设备重新连接后的第一个 samplebuffer。这让我知道我必须填补多长时间的空白。LastAudioDisconnect 始终保存上次写入的音频样本缓冲区的演示时间戳。
启用 Guard Malloc 后,程序崩溃:CrashIfClientProvidedBogusAudioBufferList
编辑:禁用 Guard Malloc 后,我可以在录制时多次重新连接音频设备,当我停止录制时,间隙没有问题。
那么问题是我在重新连接设备后只有几分钟的时间来停止录制,因为 AVAssetWriter 随机失败,错误代码为 11800 (AVErrorUnknown)。
ios - 如何创建像照片应用一样的延时视频?
我正在寻找一种在运行 iOS 9 的 iPhone 上创建长时间流逝视频的方法,并希望获得一些关于如何开始的指示。理想情况下,我会将 1 小时的素材压缩为 1 分钟,因此比例因子为 60。我从 60 帧中取出一帧并将它们拼接在一起,对吗?
我有一个使用 AVFoundation 捕获图像的项目captureOutput:idOutputSampleBuffer:fromConnection:
但是,我不确定是否有更好的方法来创建几个小时的时间间隔。
拍摄单张照片并将它们拼接在一起(每隔几秒钟激活一次相机)是否有意义?
或者只是从 CMSampleBufferRef 中取出帧?
我可以使用其他 API 来捕获相机图像吗?
我希望了解哪种方法会带来最高的质量和电池寿命。
我正在查看这个问题,它似乎有拼接图像的代码,但我不确定我的项目是否需要其他任何东西。
ios - CMSampleBufferRef kCMSampleBufferAttachmentKey_TrimDurationAtStart 崩溃
这困扰了我一段时间。我有视频转换将视频转换为“.mp4”格式。但是在某些视频上发生了崩溃,但不是全部。
这是崩溃日志
这是我的代码:
这是导致崩溃的部分
我一直在四处寻找,似乎我需要将“ kCMSampleBufferAttachmentKey_TrimDurationAtStart ”设置为第一个缓冲区,但找不到任何有关如何设置此值的示例。
请指教。谢谢!
ios - 带有 QuickTime 的视频播放没有声音,VLC 播放有声音
首先,我使用 AVCaptureSession 从摄像头和麦克风捕获视频和音频。然后委托下面的方法代码:
转入AudioBufferList
以下CMSampleBuffer
代码:
最后,将视频和音频数据保存为test.mov
文件。问题是用 Quicktime 播放文件,但没有声音。用VLC播放文件,有声音。并且可以用ffmpeg剥离出aac格式的音频文件。
我想问题是AudioBufferList
转移到CMSampleBuffer
,缺少一些信息导致 Quicktime 无法正确播放。