
有没有人有过将原始字节流(分成每像素信息,但不是标准格式的视频)转换为低分辨率视频流的经验?我相信我可以将数据映射到每像素字节的RGB值,因为与原始数据中的值对应的颜色值将由我们确定.我不知道从那里去哪里,或者每个像素需要RGB格式.
我看过FFMPeg,但它的文档很大,我不知道从哪里开始.
我所包含的具体问题是,是否可以使用该像素数据创建CVPixelBuffer?如果我这样做,我需要转换为每像素数据的格式是什么?
另外,我是否应该更深入地研究OpenGL,如果是这样,哪里可以找到有关此主题的信息的最佳位置?
那么CGBitmapContextCreate呢?例如,如果我去了this之类的东西,那么典型的像素字节需要看起来像什么?这是否足够快以保持帧速率高于20fps?
编辑:
我想在你们两人的出色帮助下,以及我自己的一些研究,我已经制定了一个如何构建原始RGBA数据的计划,然后根据该数据构建一个CGImage,从而创建一个来自该CGImage的CVPixelBuffer从这里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的可显示视频所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)