从Apple文档中,在OSX 10.9中不推荐使用Quicktime框架,而是支持AVFoundations和AVKit。由于我不确定的原因,大多数文档忽略了一些名为VideoToolbox的框架涵盖了一些Quicktime框架替换功能。该替换功能包括解码和解压缩等。
我想解码和解压缩h.264编码的视频数据包(NAL包,TS包等等),将它们放在像素缓冲区中,然后使用Core Video和OpenGL显示视频。
我通过usb从编码框获取视频数据包。运行[AVCaptureDevice devices]
时,此框不会显示。所以我不能使用大多数AVFoundation(据我所知)直接与盒子接口。但是,盒子附带了一个api,可以访问视频数据包文件。我可以将它们写入磁盘并创建一个可以通过quicktime播放的视频。但是进行实时播放是个问题。因此,解码,解压缩和创建像素缓冲区的问题让我可以使用Core Video和OpenGL。
我认为如果我可以创建像素缓冲区,我可以使用AVAssetWriterInputPixelBufferAdaptor
并找出将其转换为AVCaptureSession
的方法。如果我能做到这一点,我应该可以放弃使用OpenGL并使用AVFoundations和AVKit提供给我的工具。
另外,从我对AVFoundations文档的阅读中,每次他们谈论视频/音频数据流时,他们都在谈论两件事之一;来自AVCaptureDevice的流或来自HTTP Live Stream的流处理。就像我之前说的那样,生成视频数据包的框不会显示为AVCaptureDevice
。并且,如果我不需要,我宁愿不构建/实现HTTP Live Streaming服务器。 (希望我不需要,虽然我在网上看到有人做过。)
非常感谢任何帮助。
谢谢!
答案 0 :(得分:9)
好的,已经有一段时间了,但我终于弄明白了如何正确使用VideoToolbox和原始的未压缩和编码数据流。
基本上,我必须熟悉H264规范,并从great post获得了很多帮助。
以下是步骤
我希望这有助于某人。