【问题标题】:Get raw data stream from AVFoundation Capture Session从 AVFoundation Capture Session 获取原始数据流
【发布时间】:2011-07-07 13:40:44
【问题描述】:

我需要以半直播流类型的方式从 AVCaptureSession 获取数据流。根据我使用 AVFoundation 的经验,我只能将文件写入磁盘,然后再将其读出。

有没有办法在数据通过流传输到服务器时捕获数据?

谢谢!

【问题讨论】:

  • 如果您想发送原始 PCM,那么您可以从 CMSampledBuffer 中获取所有数据。查看 CMSampleBuffer.h 和 CMSampleBuffer 参考,了解如何获取数据。如果要流式传输 AAC,则需要使用 CoreAudio。您可以使用简单的 AudioQueue 服务来做到这一点。如果您需要更多控制,例如使用 AAC-LD 或音频消除,那么您将需要使用 AudioUnits。查看 Kevin Avila 和 Chris Adamson 的 CoreAudio 书籍。我使用 AudioQueue 录制代码作为将 AAC 音频流式传输到服务器的测试用例。

标签: iphone ios cocoa-touch ipad avfoundation


【解决方案1】:

您可以使用AVCaptureVideoDataOutput 和/或AVCaptureAudioDataOutput 获取原始数据。

【讨论】:

  • 如何将 CMSampleBuffer 对象转化为适合发送到服务器的 NSData 对象?
  • @Dex:取决于您捕获的格式。通常,您会获得图像缓冲区并将其锁定,如here 所示。然后您可以使用CVPixelBuffer 函数收集原始数据来检索所有平面。
  • 我实际上只录制音频
  • @Dex:在这种情况下使用AVCaptureAudioDataOutput
  • @Dex:示例代码见here
猜你喜欢
  • 2021-06-06
  • 2018-10-13
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多