星期五, 11月 22, 2013

Android 與網路攝影機(2)

在可以播放以後,會想到的是能不能順便錄影?
Android 上的錄影在網路上可以找到的範例,多半是用既有的 MediaRecorder (Android 應用程式開發:如何錄製影片) 或是發 Intent 給可以錄影的 app (Recording Videos Simply) 來做。由於之前選用的是 Motion JPEG,這兩個方法都不可行。MediaCodec 似乎可用,但沒認真去找範例。
延續前篇,看了 MjpegView 原始碼,裏面的 MjpegViewThread 是使用 MjpegInputStream 在讀取 Motion JPEG,讀到一張圖,就畫在 SurfaceView 上。在 StackOverflow 上有看到 jcodec,可以餵給他 bitmap ,然後會壓縮出 H.264 影片。這正好是我所需要的,就拿來試試看了。
套用以後的結果放在 github 上,這裡就不貼程式碼了。實際上,jcodec 是合用,而且有特別針對 Android 提供一些方便的 Helper function,但是還是有缺點,第一個文件不是很齊全,StackOverflow 上能找到的 jcodec 範例或多或少都有點問題,建議是去下載最新的版本,然後參考裏面的 example 來使用;第二個是編碼後的影片不是每個裝置都能播放,電腦上播放倒是沒問題。第二個問題還蠻大的,關於這點,有人回報給 jcodec 的 issue tracker 了:Generate MP4 viewable on all versions of Android? · Issue #25 · jcodec/jcodec
後來沒繼續再深究下去,僅針對曾經有看過的部份做個筆記,就這樣。

沒有留言: