问题标签 [core-video]

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 投票
2 回答
1567 浏览

cocoa - 从 libswscale 中获取 PIX_FMT_YUYV422

我正在尝试学习在 Cocoa 中使用不同的 ffmpeg 库,并且我正在尝试借助 Core Video 来显示帧。看来我已经让 CV 回调工作了,它得到了我尝试放入 CVImageBufferRef 的帧,然后我用 Core Image 绘制。

问题是我试图让 PIX_FMT_YUYV422 与 libswscale 一起工作,但是一旦我将像素格式更改为 PIX_FMT_YUV420P 以外的任何其他格式,它就会因 EXC_BAD_ACCESS 而崩溃。

只要我使用YUV420P,程序就会运行,尽管它不能正常显示。我怀疑不支持像素格式,所以我想尝试PIX_FMT_YUYV422。

我之前运行过它并成功地用 PIX_FMT_RGB24 编写了 PPM 文件。出于某种原因,它现在就在我身上崩溃了,我看不出有什么问题。

我在这里有点不知所措,但这是我更喜欢学习的方式。:)

这是我分配 AVFrame 的方式:

然后我尝试像这样通过 swscale 运行它:

最后,我尝试将其写入像素缓冲区以与 Core Image 一起使用:

它以 420P 运行,但与像素缓冲区的 kYUVSPixelformat 不匹配,据我所知,它不接受 YUV420。

我真的很感激任何帮助,无论多么小,因为它可能会帮助我继续努力。:)

0 投票
1 回答
527 浏览

cocoa - 不同macosx图形api、框架和层的硬件加速/性能和联动

我对不同类型的视图/上下文/渲染后端的了解越多,我就越感到困惑。

关于http://en.wikipedia.org/wiki/Quartz_%28graphics_layer%29 MacOSX 提供 Quartz (Extreme) 作为渲染后端,它本身就是 Core Graphics 的一部分。在 Apple 文档和一些书籍中,他们也说无论如何你都使用 OpenGL(显然因为这个操作系统使用 OpenGL 来渲染它的所有 UI)。

我目前有一个应用程序应该从相机捕获实时视频(通过基于 Quicktime 但是 Cocoa 的 QTKit),我想进一步处理帧(通过 Core Image、GLSL 着色器等)。

到目前为止,一切都很好。现在我的问题是 - 如果你在性能方面重要吗

  • a) 通过 Quartz 并通过 OpenGL 隐式绘制捕获的帧或
  • b) 如果您设置 OpenGL 上下文和 DisplayLink 并通过 OpenGL 显式绘制缓冲图像?

无论哪种方式都有什么优点或缺点?

我查看了来自苹果开发者页面的不同示例(尤其是 CoreImage101 和 CoreVideo101)和文档,但我不明白为什么他们会(或必须)那样做?!?

我真的不明白核心视频和核心动画在哪里发挥作用?b) 是否自动意味着我使用核心视频?我可以通过哪种方式使用核心动画?

附加信息:

ps:顺便说一句,我在 Leopard 上,所以还没有 QuicktimeX 混乱 :)

0 投票
0 回答
809 浏览

core-animation - 在 CAOpenGLLayer 渲染方法中给定 CVTimeStamp 的 QTVisualContext 的电影时间?

我正在使用标准的 CoreVideo Display Link + QTVisualContext 将 QuickTime 电影渲染到NSOpenGLView子类中。我现在想将时间线视图与电影播放同步。时间线视图被实现为一个图层托管视图,托管一个CAOpenGLLayer渲染时间线的子类。我选择了这种架构,因为它CAOpenGLLayer可以CVTimeStamp用于渲染。我以为我可以使用这个时间戳从 QTVisualContext 中获取当前电影时间。

我发现从 CVTimeStamp 获取电影时间的唯一方法是将 QTVisualContext 复制到 CVImageBuffer 中(使用QTVisualContextCopyImageForTime),然后从 CVImageBuffer 的kCVBufferMovieTimeKey附件中检索电影时间。显然,这似乎有点矫枉过正,因为我不需要图像。此外,文档QTVisualContextCopyImageForTime表明不允许在前一个呼叫之前要求时间。由于我无法保证CoreAnimation线程和CoreVideo显示链接线程之间的事件顺序,所以我陷入了死胡同。

似乎CVDisplayLinkTranslateTime应该能够将我在CAOpenGLLayer渲染方法中获得的 CVTimeStamp 转换为电影时间和电影时间基准,但我不确定如何将此(显示链接)时间与 QuickTime 电影的时间联系起来。我不一定知道电影的时间 0 何时相对于 Display Link 电影时间。

那么,有没有办法直接从 QTVisualContext(或 QTMovie->QTVisualContext->Display Link->...)路径中的任何其他地方获取 CVTimeStamp 的电影时间?

0 投票
1 回答
364 浏览

cocoa - 在 3d 中使用核心图像

我有一个工作Core Video设置(通过 USB 相机捕获的帧QTKit),当前帧被渲染为子类中 3d 空间中任意平面上的纹理NSOpenGLView。到目前为止一切都很好,但我想Core Image在这个框架上使用一些过滤器。我现在有了基本的代码设置,它像以前一样渲染我未处理的视频帧,但最终处理的输出CIImage是渲染器作为屏幕对齐的四边形进入视图。感觉就像是在我的 3D 渲染上闪现的图像。这是我不想要的!

我正在寻找一种方法来处理我的视频帧 (a CVOpenGLTextureRef),Core Image并在我的飞机上以 3d 形式渲染生成的图像。我必须使用屏幕外渲染(存储视口,设置新视口和模型视图以及透视矩阵并渲染到 FBO)还是有更简单的方法?

提前致谢!

0 投票
2 回答
896 浏览

iphone - 我需要将视频文件上传到网络服务器 iphone sdk

我需要将视频文件上传到网络服务器 iphone sdk。这只是一部快速电影。

0 投票
1 回答
7531 浏览

ios - 如何将 CGImage 转换为 CMSampleBufferRef?

我想使用该方法将 a 转换CGImageCMSampleBufferRef并将其附加到 a 。我已经设法使用以下代码获得了,但是当我提供结果时简单地返回. 我究竟做错了什么?AVAssetWriterInputappendSampleBuffer:CMSampleBufferRefappendSampleBuffer:NOCMSampleBufferRef

PS 我知道这段代码中存在内存泄漏,为了简单起见,我省略了一些代码。

0 投票
3 回答
1375 浏览

iphone - iPhone:实时视频色彩信息、焦距、光圈?

有没有办法使用 AVFoundation 和 CoreVideo 来实时获取颜色信息、光圈和焦距值?

让我解释。说当我拍摄视频时,我想在屏幕的一小部分中采样颜色并将其以 RGB 值输出到屏幕?另外,我想显示当前光圈的设置。

有谁知道是否可以收集这些值?目前我只看到静态图像可以做到这一点。

想法?

0 投票
0 回答
1036 浏览

iphone - CVPixelBufferCreateWithBytes 的宽高参数

似乎核心视频的 CVPixelBufferCreateWithBytes 允许宽度和高度为 320 和 480。

如果我尝试 160 和 240,则单击图像。

但我真的很喜欢创建尺寸更小的图像。

0 投票
2 回答
1532 浏览

ios - 保存 iPhone 应用程序的视频截屏

有没有办法从您自己的应用程序中捕获屏幕视频?据我所知,(仅限相机)没有办法做到这一点UIImagePickerController,但也许有办法用 iOS 4 AV FoundationCore Video做到这一点?

0 投票
1 回答
4171 浏览

video - iOS 的核心视频示例

除了Core Video Programming Guide之外,有谁知道使用 Core Video 的任何教程和示例?