2011-11-30 136 views
3

我想通過更改像素的顏色來處理我在Android手機上錄製的視頻。我知道如何處理我想要的處理,但我不知道把所有東西放在一起的最佳方式。Android處理視頻,YCrCb幀到視頻

到目前爲止的事情,我可以做的是:

  • 獲取從視頻作爲的YCrCb(YUV)
  • 單幀修改或YCrCb字節我多麼希望
  • 轉換或YCrCb到RGB排列
  • RGB陣列轉換爲位圖

我怎樣才能把è一起合作並將其保存爲可以在Android上播放的視頻? 我可以直接從YCrCb信息?或者我需要先轉換爲RGB還是其他格式?

我不需要實時做到這一點,其目的是錄製視頻,保存視頻,然後處理視頻並保存處理後的視頻。 但是我的確有速度。 我可以使用它們的庫來加速這個過程嗎?我知道Android提供了OpenGL的使用,並且我已經閱讀了關於ffmpeg的內容,但我不確定最佳路徑。

如果有人能指出我在正確的方向,我將不勝感激! = D

謝謝! = D

+0

我知道一個.yuv視頻格式,如果只是一系列的YUV幀,並且沒有標題或其他幀速率等信息。如果是這樣,將每個YCrCb幀寫出來是否可行。 yuv文件,並從那裏我可以將其轉換爲更有用的視頻格式? – Kage

回答

2

您從相機獲取的幀是未壓縮的。這通常不是視頻存儲的方式,因爲未壓縮的幀太大而無法被播放器實時讀取和顯示。相反,您希望對您的yuv或rgb幀進行編碼,以使幀更小,並且回放期間的I/O負載很小。

您應該使用的編碼格式必須是您的設備可以在硬件中解碼的編碼格式,因爲CPU中的解碼也非常昂貴。現在,如果您將H.264用於視頻和音頻的AAC,並使用MP4容器,那麼您應該會很好。不幸的是,如果您的應用中包含H.264/AAC編碼器(甚至是開源軟件)並計劃從中獲利,那麼您可能會從MPEG LA獲得訪問權限,他們可能希望從您那裏收集,因爲H.264和AAC要求許可。我相信如果您使用已獲得許可並安裝在設備中的編解碼器(如攝像機應用程序用於錄製的編解碼器),則可以避免這種情況。我不知道Android平臺是否允許您訪問相機編解碼器。

至於圖書館,我認爲從ffmpeg項目的libavcodec和libavformat是最完整的。使用這些庫,您可以編碼H.264/AAC/MP4文件,假設授權問題不會影響您。

+0

非常感謝您提供這些信息!這是超級有用=) 我會努力讓ffmpeg工作,並嘗試編碼我的幀,並使用你建議的mp4容器。 – Kage