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

0 投票
1 回答
871 浏览

ios - 调整由 captureStillImageBracketAsynchronouslyFromConnection:withSettingsArray:completionHandler 提供的 CMSampleBufferRef 的大小:

在我正在开发的应用程序中,我们正在拍摄需要具有 4:3 纵横比的照片,以最大限度地扩大我们拍摄的视野。到目前为止AVCaptureSessionPreset640x480,我们一直在使用预设,但现在我们需要更大的分辨率。

据我所知,仅有的另外两种 4:3 格式是 2592x1936 和 3264x2448。由于这些对于我们的用例来说太大了,我需要一种方法来缩小它们。我研究了一堆选项,但没有找到一种方法(最好不复制数据)以有效的方式执行此操作而不会丢失 exif 数据。

vImage是我调查的事情之一,但据我所知,需要复制数据并且 exif 数据会丢失。UIImage另一种选择是从 提供的数据创建一个jpegStillImageNSDataRepresentation,对其进行缩放并取回数据。这种方法似乎也剥离了 exif 数据。

这里的理想方法是直接调整缓冲区内容的大小并调整照片的大小。有谁知道我会怎么做?

0 投票
0 回答
1027 浏览

ios - 保留 CMSampleBufferRef 会导致随机崩溃

我正在使用captureOutput:didOutputSampleBuffer:fromConnection:以跟踪帧。对于我的用例,我只需要存储最后一帧并在应用程序进入后台时使用它。

这是我的代码示例:

问题是,在某些情况下,我从内部得到了这个崩溃imageFromSampleBuffer

崩溃发生在CGImageRef quartzImage = CGBitmapContextCreateImage(con);

我究竟做错了什么?

0 投票
1 回答
470 浏览

ios - 当前帧的 AVAssetReader/AVAssetWriter 预览

我正在使用AVAssetReader/AVAssetWriter 在 iOS 上转换我的视频。我的问题是:通过实时转换显示当前帧预览的最有效方法是什么。我正在考虑转换CMSampleBufferRef为 UIImage,然后应用到 UIImageView。它有什么更好的方法吗?

0 投票
0 回答
272 浏览

objective-c - 委托回调中的 CMSampleBufferRef 参数为空

我正在使用这段代码来创建 AVCaptureSession,但是当-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection被调用时,sampleBuffer 大小为 0

我的方法有什么问题吗?有没有可能这个错误可能在其他地方?我正在使用 ARC。

编辑 缓冲区不是空的,但它立即被释放。通过保留缓冲液解决。谢谢

0 投票
1 回答
415 浏览

avfoundation - CMSampleBufferGetSampleTimingInfo:没有持续时间?

我有一个直播,并CMSampleBufferGetSampleTimingInfo给出了CMTime(value=0, timescale=0)视频的持续时间。

对于音频,我一次获得 1024 个样本,但为样本CMSampleBufferGetSampleTimingInfo(sampleBuffer, index, &timingInfo)中的每个索引提供完全相同的presentationTimeStamp。

如何在视频帧的实时流中准确获取持续时间信息,以及如何获取音频样本的实际时间CMSampleBufferRef

0 投票
1 回答
2035 浏览

ios - iOS中的方形视频输出

AVFoundation有没有办法在iOS中获得方形视频输出?

我使用 OpenGL 来处理CMSampleBuffer视频的每一帧()。每一帧
都是旋转的,所以我需要裁剪和旋转CMSampleBuffer。但我不知道该怎么做,所以我相信有一种方法可以通过videoSettingsAVCaptureVideoDataOutput.

我用谷歌搜索,谷歌搜索并搜索它,但一无所获。swift中的代码示例会很棒。

更新:

我在 Swift 中的完整最终解决方案:

它对我来说是完美的镜像和旋转视频输出!但它不是裁剪!

0 投票
1 回答
745 浏览

objective-c - 写入静默 CMSampleBuffer 会导致崩溃:CrashIfClientProvidedBogusAudioBufferList

我正在使用 AVAssetwriter 录制视频/音频,并希望能够编写静音样本缓冲区。我在 CoreAudio 方面没有那么有经验,所以我很难想出一个可行的解决方案。

这个想法是在音频设备断开连接时继续录制视频,直到重新连接。问题是,AVFoundation 以某种方式将音频推到前面,因此生成的电影文件大量不同步。

我当前的实现尝试创建一个空/静音 CMSampleBuffer 以放置在没有连接音频设备的段之间。

顶部的 sampleBuffer 是音频设备重新连接后的第一个 samplebuffer。这让我知道我必须填补多长时间的空白。LastAudioDisconnect 始终保存上次写入的音频样本缓冲区的演示时间戳。

启用 Guard Malloc 后,程序崩溃:CrashIfClientProvidedBogusAudioBufferList

编辑:禁用 Guard Malloc 后,我可以在录制时多次重新连接音频设备,当我停止录制时,间隙没有问题。

那么问题是我在重新连接设备后只有几分钟的时间来停止录制,因为 AVAssetWriter 随机失败,错误代码为 11800 (AVErrorUnknown)。

0 投票
2 回答
1427 浏览

ios - 如何创建像照片应用一样的延时视频?

我正在寻找一种在运行 iOS 9 的 iPhone 上创建长时间流逝视频的方法,并希望获得一些关于如何开始的指示。理想情况下,我会将 1 小时的素材压缩为 1 分钟,因此比例因子为 60。我从 60 帧中取出一帧并将它们拼接在一起,对吗?

我有一个使用 AVFoundation 捕获图像的项目captureOutput:idOutputSampleBuffer:fromConnection:

但是,我不确定是否有更好的方法来创建几个小时的时间间隔

  • 拍摄单张照片并将它们拼接在一起(每隔几秒钟激活一次相机)是否有意义?

  • 或者只是从 CMSampleBufferRef 中取出帧?

  • 我可以使用其他 API 来捕获相机图像吗?

    我希望了解哪种方法会带来最高的质量和电池寿命。

我正在查看这个问题,它似乎有拼接图像的代码,但我不确定我的项目是否需要其他任何东西。

0 投票
2 回答
2056 浏览

ios - CMSampleBufferRef kCMSampleBufferAttachmentKey_TrimDurationAtStart 崩溃

这困扰了我一段时间。我有视频转换将视频转换为“.mp4”格式。但是在某些视频上发生了崩溃,但不是全部。

这是崩溃日志

这是我的代码:

这是导致崩溃的部分

我一直在四处寻找,似乎我需要将“ kCMSampleBufferAttachmentKey_TrimDurationAtStart ”设置为第一个缓冲区,但找不到任何有关如何设置此值的示例。

请指教。谢谢!

0 投票
0 回答
158 浏览

ios - 带有 QuickTime 的视频播放没有声音,VLC 播放有声音

首先,我使用 AVCaptureSession 从摄像头和麦克风捕获视频和音频。然后委托下面的方法代码:

转入AudioBufferList以下CMSampleBuffer代码:

最后,将视频和音频数据保存为test.mov文件。问题是用 Quicktime 播放文件,但没有声音。用VLC播放文件,有声音。并且可以用ffmpeg剥离出aac格式的音频文件。

我想问题是AudioBufferList转移到CMSampleBuffer,缺少一些信息导致 Quicktime 无法正确播放。