2014-04-09 36 views
1

我正在使用Google Developer API Guide實現自定義攝像機;它使用MediaRecorder類來創建和管理攝像機的所有設置/操作。將視頻記錄到字節陣列而不寫入文件

除了將文件寫入手機花費太長時間(錄製後,大概5分鐘後我甚至可以在圖片庫下看到該文件),它仍在工作應該。

但我不想要一個文件:我需要原始字節數組記錄在它被轉儲到文件之前產生。

是否MediaRecorder甚至允許你這樣做?我在正確的方向嗎?

一個很好的例子,我需要的是如何PictureCallbackonPictureTaken()方法給你一個字節數組,其中包含的圖片以字節爲單位。

+1

我不知道Android支持的原始視頻編解碼器。大多數編解碼器,如MP4,都會導致刻錄機重寫文件頭。如Vine一樣,歡迎您將這些預覽幀中的視頻縫合在一起。 – CommonsWare

+0

好的,那麼我該如何去做呢? – yoaquim

+1

我假設他們正在使用'ffmpeg'或者沿着這些線來創建一個視頻幀。有一個會議視頻,一位Vine工程師解釋了他們使用MediaRecorder遇到的問題,以及他們如何使用預覽回調幀解決問題,儘管我沒有鏈接,但我不記得他們進入低級細節的解決方案。 – CommonsWare

回答

1

記錄後,這將是大約5分鐘之前,我甚至能看到文件的下庫

這可能是因爲你沒有做任何事情,以使其在畫廊更快速地顯示如使用MediaScannerConnectionscanFile()。只有在您告訴文件或定期掃描文件時,圖庫纔會找到文件。

+0

你建議以上問題的任何解決方案?我一直陷在同樣的問題中。 –

2

MediaRecorder的目的很簡單:告訴它輸入來自哪裏,給它寫一個文件,然後讓它運行。

如果你想要更靈活的東西,你需要使用MediaCodec。您需要的一組功能在API 18(Android 4.3)之前並不存在。

Grafika包含「連續捕獲」活動,它將H.264視頻記錄到內存中的循環緩衝區,並在點擊「捕獲」時將當前幀集寫入文件。這是純視頻;如果你想要音頻,你需要分開處理。

對於早期版本的Android,您需要使用第三方庫(如ffmpeg)來處理視頻編碼,這會顯着降低您的幀速率。