问题标签 [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.
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。
我真的很感激任何帮助,无论多么小,因为它可能会帮助我继续努力。:)
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) 是否自动意味着我使用核心视频?我可以通过哪种方式使用核心动画?
附加信息:
- http://developer.apple.com/leopard/overview/graphicsandmedia.html
- http://theocacao.com/document.page/306
- http://lists.apple.com/archives/quartz-dev/2007/Jun/msg00059.html
ps:顺便说一句,我在 Leopard 上,所以还没有 QuicktimeX 混乱 :)
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 的电影时间?
cocoa - 在 3d 中使用核心图像
我有一个工作Core Video
设置(通过 USB 相机捕获的帧QTKit
),当前帧被渲染为子类中 3d 空间中任意平面上的纹理NSOpenGLView
。到目前为止一切都很好,但我想Core Image
在这个框架上使用一些过滤器。我现在有了基本的代码设置,它像以前一样渲染我未处理的视频帧,但最终处理的输出CIImage
是渲染器作为屏幕对齐的四边形进入视图。感觉就像是在我的 3D 渲染上闪现的图像。这是我不想要的!
我正在寻找一种方法来处理我的视频帧 (a CVOpenGLTextureRef
),Core Image
并在我的飞机上以 3d 形式渲染生成的图像。我必须使用屏幕外渲染(存储视口,设置新视口和模型视图以及透视矩阵并渲染到 FBO)还是有更简单的方法?
提前致谢!
iphone - 我需要将视频文件上传到网络服务器 iphone sdk
我需要将视频文件上传到网络服务器 iphone sdk。这只是一部快速电影。
ios - 如何将 CGImage 转换为 CMSampleBufferRef?
我想使用该方法将 a 转换CGImage
为CMSampleBufferRef
并将其附加到 a 。我已经设法使用以下代码获得了,但是当我提供结果时简单地返回. 我究竟做错了什么?AVAssetWriterInput
appendSampleBuffer:
CMSampleBufferRef
appendSampleBuffer:
NO
CMSampleBufferRef
PS 我知道这段代码中存在内存泄漏,为了简单起见,我省略了一些代码。
iphone - iPhone:实时视频色彩信息、焦距、光圈?
有没有办法使用 AVFoundation 和 CoreVideo 来实时获取颜色信息、光圈和焦距值?
让我解释。说当我拍摄视频时,我想在屏幕的一小部分中采样颜色并将其以 RGB 值输出到屏幕?另外,我想显示当前光圈的设置。
有谁知道是否可以收集这些值?目前我只看到静态图像可以做到这一点。
想法?
iphone - CVPixelBufferCreateWithBytes 的宽高参数
似乎核心视频的 CVPixelBufferCreateWithBytes 允许宽度和高度为 320 和 480。
如果我尝试 160 和 240,则单击图像。
但我真的很喜欢创建尺寸更小的图像。
ios - 保存 iPhone 应用程序的视频截屏
有没有办法从您自己的应用程序中捕获屏幕视频?据我所知,(仅限相机)没有办法做到这一点UIImagePickerController
,但也许有办法用 iOS 4 AV Foundation或Core Video做到这一点?
video - iOS 的核心视频示例
除了Core Video Programming Guide之外,有谁知道使用 Core Video 的任何教程和示例?