2010-12-17 145 views
9

根據這What Techniques Are Best To Live Stream iPhone Video Camera Data To a Computer?是可能從iPhone相機獲得壓縮數據,但正如我一直在AVFoundation參考中閱讀,你只能得到未壓縮的數據。什麼是直播iPhone攝像頭到媒體服務器的最佳方式?

所以問題是:

1)如何從iPhone的攝像頭得到壓縮幀和音頻?

2)使用ffmpeg的API編碼未壓縮的幀對於實時流式傳輸足夠快嗎?

任何幫助將非常感激。

謝謝。

+1

你是如何解決這個問題的? – DivineDesert 2012-08-18 12:14:58

+0

我最終通過使用FFmpeg的API獲取AVFoundation和編碼+流媒體的未壓縮數據(幀和音頻)。它在iPhone 4中運行得非常好,分辨率達到192x240,可達到30 FPS。在更高的分辨率下,會降低太多的幀數。 – 2012-08-22 13:46:54

+0

@AlexandreOS如何做到這一點,請分享它,它對我們有幫助,謝謝 – Ron 2012-09-13 05:36:32

回答

8

你很可能已經知道....

1)如何從iPhone的攝像頭壓縮幀和音頻?

你不能這樣做。 AVFoundation API從各個角度阻止了這一點。我甚至嘗試過命名管道和其他一些鬼鬼祟祟的unix foo。沒有這樣的運氣。你別無選擇,只能將它寫入文件。在你的鏈接文章中,用戶建議設置回調來傳遞編碼幀。據我所知,這是不可能的H.264流。捕獲代理將傳遞以特定像素格式編碼的圖像。這是編碼的電影作家和AVAssetWriter。

2)使用ffmpeg的API對未壓縮幀進行​​編碼對於實時流是足夠快的嗎?

是的。但是,你將不得不使用libx264,它可以讓你進入GPL領域。這與應用商店不完全兼容。

爲了提高效率,我建議使用AVFoundation和AVAssetWriter。

+3

其實1是部分錯誤。我編寫了一個庫,可以在不使用私有API的情況下編碼,從而實時傳送H.264數據。 – 2011-05-13 04:30:30

+1

你能和我們分享這個圖書館嗎?在沒有使用libx264的情況下獲得這個H.264流的替代方法將是非常好的。這就是爲什麼我最終使用FFmpeg的MPEG編解碼器。 – 2012-08-22 13:53:24

+0

@AlexandreOS不幸的是我的圖書館只有商業許可。我將來可能會在雙授權下發布它。 – 2012-08-23 21:54:20

4

我同意史蒂夫。我想補充一點,在嘗試使用Apple的API時,您將不得不做一些嚴重惡意的黑客行爲。默認情況下,AVAssetWriter在將緩衝區溢出到文件之前花費一秒。我還沒有找到改變設置的方法。解決方法似乎是強制使用多個AVAssetWriters將小文件寫入和文件關閉。但是那會帶來很多開銷。這並不漂亮。

肯定地向Apple申請一項新功能請求(如果您是iOS開發人員)。我們做得越多,他們就越有可能添加某種可以寫入緩衝區和/或流的作者。

另外,我會對史蒂夫在x264 GPL問題上所說的一個補充是,我認爲您可以獲得比GPL更好的商業許可證,但當然要花費您的錢。但這意味着您仍然可以使用它並獲得相當不錯的結果,而不必打開自己的應用程序源。不如使用其硬件編解碼器的增強Apple API,但並不壞。

相關問題