2013-04-23 50 views
9

你好Android視頻專家:)如何在各種設備上可靠地捕獲Android上的低分辨率視頻?

我正在開發一個Android應用程序,它允許用戶捕捉視頻並將其上傳到遠程服務器(它比那更多的參與,但應用程序的其餘部分並不重要)。由於上傳要求,重要的是視頻尺寸合理,因此不能超高分辨率。假設最大爲680x480或10Mb /分鐘。這在Apple設備上沒有問題。

我有什麼只能被描述爲一個完整的惡夢,試圖捕捉視頻在一個合理的低比特率可靠地跨越一系列的Android設備。

據我瞭解有在Android上獲取視頻的方法有兩種:

1)利用媒體記錄器/攝像機API

2)使用意向來打開攝像機的視頻捕捉應用

選項1)提供了最大的靈活性,並允許我們輕鬆更改捕捉分辨率。然而,Android Camera API在各種設備上並不可靠,而且我擁有非常好的信息(包括來自與Google就此問題聯絡的人員),如果您使用此API捕獲視頻,那麼它將崩潰至少50%那裏的設備。 Zoom Camera FX使用Intent進行視頻拍攝是有原因的。變焦相機(不同的應用程序)似乎使用媒體記錄器,但有很多糟糕的評論視頻崩潰或不工作。

選項2)適用於各種設備,因爲它使用設備中的內置應用程序。麻煩的是,你無法控制分辨率,對意圖有一個質量暗示,但相機應用程序通常會忽略這一點。我的三星Galaxy S3默認記錄視頻速度約爲2Mb/s。這是太高分辨率。內置的應用程序當然可以改變分辨率,但這依賴於難以控制的用戶的操作。

據我所知,我可以使用ffmpeg之類的庫來改變捕獲後視頻的分辨率。然而,這要求我爲Android編譯庫,並且我已被告知,爲了合法使用設備上的解碼/編碼編解碼器,您必須支付每份應用程序約1美元的許可費。由於這個應用程序可以自由使用,這不是一個選項。

這就是我所在的地方。我搜索了很長時間的答案,但我無法弄清楚如何使用Android可靠地捕捉低分辨率視頻。

非常感謝任何幫助!

馬修

+0

您是否發現瞭解決問題的方法?我正在嘗試選項2並且一直在尋找答案...... – Salmaan 2015-04-02 05:46:46

回答

1

使用mediaRecorder這些參數,你就可以一起使用CameraMediaCodec來以任意大小和比特率記錄。例如,請參閱Grafika中的「顯示+捕獲相機」活動。

您可以檢查platform version dashboard以估計給定API級別的目標市場規模。

2

您可以通過設置幀大小(width x height),使用方法setVideoSize(int width, int height),較小的幀尺寸越小的視頻,這適用於所有Android手機定義在MediaRecorder類正是,你將不需要改變幀大小每個設備,或者您可以編碼比特率,這控制每個幀的壓縮質量。使用方法setVideoEncodingBitRate (int bitRate)較低的比特率導致較高的壓縮率,這反過來導致較低的質量和較低的視頻文件大小。請仔細閱讀MediaRecorder課程。

相關問題