2010-06-01 140 views
0

我公司生產專門用於流式傳輸實況和錄製視頻的DVR。該視頻採用標準的MPEG-4編解碼器進行編碼,因此Android中的編解碼器應該沒有問題。但是,視頻是使用非標準文件格式記錄的,並使用我們的專有協議進行流式傳輸(其中包括在每幀視頻中嵌入水印等附加數據)。有沒有什麼方法可以讓我的流拉出框架並讓它在Android設備上播放?使用非標準協議流式傳輸視頻

謝謝!

回答

0

Android有java.net.Socket,所以理論上你可以爲專有流寫一個客戶端。但是,我不知道如何利用現有的Android播放功能(例如MediaPlayer)。它似乎只支持播放文件或URL。 InputStream明顯缺失。

0

您可以創建一個套接字,取其「文件描述符」,並將其提供給MediaPlayer.setDataSource()

我實際上已經做了一些與此相似的事情,所以這種方法在現場進行了測試。

我忘了如何從套接字中提取文件描述符,但我認爲使用反射 - 或者更可能是本地代碼 - 您可以在LocalSocket之類的套接字上獲得'impl'成員,並且'fd'成員。谷歌搜索沒有發現任何人描述這一點,所以你必須自己探索確切的成員名稱和細節。

容器格式必須是由Android系統識別的東西;如果有必要,您可以使用native代碼創建pipe,以便您可以將自定義容器重新打包爲Android使用線程即時支持的內容。

在我看來,Android有很大的機會播放'原始的'H.263和H.264BP或其他東西,但我沒有測試過這個。 AVI顯然不適合流式傳輸 - 您可能不得不將視頻分割成AVI的短片段,並保持交換這些塊 - 或者您可以探索是否支持FLV或Matroska,但要小心 - 支持的容器格式可能因設備而異,或者從發佈到發佈。

0

有幾個像ffmpeg/live555這樣的開源庫可以解決您的問題。我曾在ffmpeg庫上編譯/解碼音頻/視頻文件。有java porting也可用於ffmpeg。您可以拉動您的視頻和元數據的幀數據(比特率,深度等)。

相關問題