在Mac OS X上使用QTKit播放视频数据流
问题描述:
我一直在玩QTKit几天,并成功地使用QTCaptureSession
和QTCaptureDeviceInput
等将视频数据记录到相机的文件中。在Mac OS X上使用QTKit播放视频数据流
然而,我想要做的是将数据发送到另一个位置,通过网络或同一应用程序内的不同对象(无所谓),然后播放视频数据,就好像它是一个流。
我有一个QTCaptureMovieFileOutput
,我路过nil
作为文件的URL,这样它实际上并没有数据记录到文件(我只包含在QTSampleBuffer
是通过委托回调是可用的数据感兴趣)。
我在输出上设置了一个QTCompressionOptions
对象,指定H264视频和高质量AAC音频压缩。
每次收到回调函数时,我都会将样本缓冲区中的数据附加到作为实例变量的NSMutableData
对象中。
我遇到的问题是,QTKit框架中没有'player'对象似乎能够播放视频数据的'流'。我在这个假设中纠正了吗?
我尝试使用我的数据实例变量创建一个QTMovie
对象(在QTMovieView
中播放),但我得到数据不是电影的错误。
我从错误的角度来处理这个问题吗?
此前我使用的是QTCapturePreviewOutput
,它通过每个视频帧CVImageBufferRef
s。我将这些帧转换为NSImages
以在视图上显示。
虽然这给人流动的印象,但速度缓慢,处理器饥饿。
其他人如何克服流视频问题?
答
对我来说就像你需要做一个GL纹理,然后在每帧的基础上加载数据到它。据我所知,QTMovie的一切似乎都基于预先存在的文件。