2011-04-14 84 views
1

從iOS 4.x開始,AVCaptureVideoDataOutput是否可配置爲返回壓縮幀?AVCaptureVideoOutput和壓縮

爲AVCaptureVideoDataOutput文檔說:

AVCaptureVideoDataOutput是通過其委託的具體 子類AVCaptureOutput的使用, ,以處理來自視頻 未壓縮的幀被捕獲,或訪問 壓縮幀。

其中一個屬性是'videoSettings',它根據SDK是輸出的壓縮設置,它表示壓縮設置鍵可以在AVVideoSettings.h中找到。但它也表示只支持CVPixelBufferPixelFormatTypeKey。

基於此,我可以假設AVCaptureVideoDataOutput返回到sampleBufferDelegate方法的所有幀都是未壓縮的嗎?有沒有辦法到達壓縮幀?

回答

0

SDK的當前版本僅從相機返回未壓縮的幀。也許它會在未來發生變化,但現在就是這樣。因此,獲取壓縮圖像的唯一方法就是自己做。如何去做取決於你的需求。

如果你需要把它們寫在磁盤上,它會很長,效率低下(電影會更好)。如果您需要發送壓縮圖像OTA,則可以使用jpeg或png庫進行操作。

+0

我想通過電線將幀(和伴音)發送到服務器,壓縮是一個必要條件,整個操作的速度也是如此。因此保存到磁盤會導致整體延遲。你會仍然使用JPEG或PNG壓縮庫或其他東西?是否還有另一個很好的選擇,例如直接使用可以由sampleBufferDelegate返回的CMBlockBuffer? – 2011-04-18 22:07:16

+0

@Steve Card:我不確定你真的需要壓縮,這取決於你與服務器的連接以及你對圖像的處理。我認爲除了使用核心媒體緩衝區(我不習慣音頻)的緩衝區代表返回沒有其他選項。這是最快的,它可以在一個線程中完成。估計整個流的大小以及您對帶寬和計算的需求,您將知道該怎麼做。 – 2011-04-19 07:49:15