gpt4 book ai didi

ios - 将原始数据转换为适用于 iOS 的可显示视频

转载 作者:可可西里 更新时间:2023-11-01 05:30:29 25 4
gpt4 key购买 nike

我有一个有趣的问题需要研究,它与非常低级别的视频流相关。

有没有人有将原始字节流(分成每个像素信息,但不是标准视频格式)转换为低分辨率视频流的经验?我相信我可以将数据映射为每像素字节的 RGB 值,因为与原始数据中的值对应的颜色值将由我们确定。我不确定从那里去哪里,或者每个像素需要什么 RGB 格式。

我看过 FFMPeg,但它的文档非常庞大,我不知道从哪里开始。

我提出的具体问题包括,是否可以使用该像素数据创建 CVPixelBuffer?如果我这样做,我需要将每像素数据转换成哪种格式?

此外,我是否应该更深入地研究 OpenGL,如果是的话,哪里是查找有关该主题的信息的最佳地点?

CGBitmapContextCreate 呢?例如,如果我去了,我会选择类似 this 的东西。 ,典型的像素字节需要是什么样子的?这是否足够快以将帧速率保持在 20fps 以上?

编辑:

我认为在你们两个的大力帮助下,以及我自己的更多研究,我已经制定了一个计划来构建原始 RGBA 数据,然后从该数据构建一个 CGImage,进而创建一个 CVPixelBuffer来自这里的 CGImage CVPixelBuffer from CGImage .

但是,要在收到数据时实时播放,我不确定我会看到什么样的 FPS。我是将它们绘制到 CALayer,还是有一些类似于 AVAssetWriter 的类,我可以在附加 CVPixelBuffers 时使用它来播放它。我的经验是使用 AVAssetWriter 将构建的 CoreAnimation 层次结构导出到视频,因此视频总是在开始播放之前构建,而不是显示为实时视频。

最佳答案

我以前做过这个,我知道你不久前找到了我的 GPUImage 项目。正如我在那儿的问题上所回答的那样,GPUImageRawDataInput 正是您想要的,因为它可以将 RGBA、BGRA 或 RGB 数据直接快速上传到 OpenGL ES 纹理中。从那里,帧数据可以被过滤,显示到屏幕上,或记录到电影文件中。

根据我的个人经验,您建议的通过 CGImage 到 CVPixelBuffer 的路径不会产生很好的性能。为实时视频传递 Core Graphics 时开销太大。您想直接进入 OpenGL ES 以获得最快的显示速度。

我什至可以改进我的代码,使其比现在更快。我目前使用 glTexImage2D() 从本地字节更新纹理数据,但使用 iOS 5.0 中引入的纹理缓存来加速保持其大小的纹理内的刷新数据可能会更快。设置缓存会产生一些开销,这使得一次性上传速度稍慢,但快速更新数据应该会更快。

关于ios - 将原始数据转换为适用于 iOS 的可显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com