2016-10-06 76 views
0

我正在使用libstreaming。需要幫助將高清視頻流保存到文件

我想發起兩個MediaCodec與不同的設置和比特率(一個低質量 - 這將通過HTTP傳輸和一個高保存到SDCARD)。

問題似乎是,我無法抓住兩個單獨的Mediacodec對象具有不同的設置。

高比特率版本被保存爲只包含綠色背景*的視頻,除非尺寸設置爲< 352x288,但低比特率版本已成功(並正確)流式傳輸到網絡。

我真的很希望我做了明顯錯誤的事情,並且有一種簡單的方法可以將HD版本的流保存到磁盤。

code block where I initiate the MediaCodecs

回答

1

一般情況下,這應該在大多數設備上工作 - 我做沒有對一些設備的問題。

但是有些設備的編碼器驅動程序對此有限制 - 特別是一些英特爾設備拒絕創建第二個編碼器實例,而其中一個設備處於活動狀態。 (三星Galaxy Note 3 10.1讓人想起 - 不知道是否所有其他基於英特爾的都有相同的問題,或只有其中一些。)

不幸的是,即使Android CTS測試有測試,以確保硬件編碼器工程,沒有測試可以確保您可以同時有多個編碼器處於活動狀態。

只有在第二個編碼器上有不同的設置,或者它們的設置相同時,您的情況纔會失敗嗎?

如果一個數據流的分辨率較低,則可以嘗試使用SW編碼器,而使用高分辨率版本的HW編碼器。在Android 6.0上,SW編碼器OMX.google.h264.encoder應該是相當不錯的,而在舊版本中,它幾乎不可用。

+0

非常感謝......會按照您的建議回報。在回答關於案例失敗的問題時 - 是的 - 只有在設置不同時纔會失敗。當分辨率小於某個(相當小)的數字時,本地版本可以正確保存。 –

+0

嗯,對。小心告訴這是什麼設備,什麼分辨率組合工作,哪些不?它也可能對編碼器硬件可用的總內存造成某種限制。例如。如果您在max時可以編碼一個1080p的數據流,那麼您可以編碼720p +低分辨率的數據流,只要它們的總內存使用率均不超過單個1080p數據流的使用量即可。 – mstorsjo