我正在编写一个简单的网络流媒体视频应用程序,与普通的“H.264 over RTP”方法略有不同(我使用自己的编解码器)。
为实现这一目标,我需要原始帧和原始音频样本,QTMovie在播放电影时会隐式发送到QTMovieView。
检索原始视频帧的最常用方法是使用VisualContext - 然后,使用显示链接回调,我使用此VisualContext“生成”CVPixelBufferRef。所以我得到的频率与我当前的刷新率同步的频率(不是我需要这种同步 - 我只需要一个可以通过网络传输的帧“流” - 但CoreVideo编程指南和大多数Apple与视频相关的样本促进了这种方法。)
我遇到的第一个问题是 - 当我将一个VisualContext附加到QTMovie时,图片无法再渲染到QTMovieView上。我不知道为什么会发生这种情况(我猜它与GWorld的想法有关,当我附加VisualContext时渲染被“脱离”)。好吧,至少我有帧,我可以渲染到一个简单的NSView(虽然这听起来不对,性能不友好。我做得对吗?)
声音怎么样,我不知道该怎么做。我需要在播放电影时获取原始声音样本(理想情况下 - 类似于QTCaptureDecompressedAudioOutput在其回调中返回的内容)。 如果没有别的办法,我已经准备好钻研已弃用的Carbon QuickTime API。但我不知道从哪里开始。我应该使用相同的CoreVideo显示链接并定期检索声音吗?我应该获得QTDataReference并手动定位声音帧吗?
我实际上是编程视频和音频服务的初学者。如果您可以分享一些经验,我真的很感激您可以与我分享的任何想法:)
谢谢你, 詹姆斯