我想讓Android手機控制三星智能電視上的視頻流回放。我可以通過URL向視頻流發送UPnP命令到電視。不幸的是,三星電視不接受指向本地網絡之外的URL。爲了使遠程流正常工作,我必須通過手機循環流量,使其看起來像是三星電視的本地URL。通過Android手機路由視頻流量流量
我可能必須在手機上運行一個簡單的代理服務器類型。手機總是知道流的URL是什麼,所以代理可以非常簡單,它總是接收任何傳入請求並將其傳送到外部服務器上的視頻流。
我試過運行一個套接字連接,並簡單地將輸入strem從外部服務器複製到套接字服務器連接的輸出流。雖然使用這個網頁瀏覽器可以下載文件,但所有的元數據都會丟失,並且每次文件下載完成後,我似乎也會收到損壞的管道異常。媒體播放器似乎完全不瞭解流,並且例如VLC上沒有播放。
對於服務器我用一個很簡單的代碼是這樣的:
public class ServerThread implements Runnable {
public void run() {
try {
if (SERVERIP != null) {
serverSocket = new ServerSocket(SERVERPORT);
while (true) {
// listen for incoming clients
Socket client = serverSocket.accept();
client.setSoTimeout(20000);
client.setKeepAlive(true);
OutputStream os = client.getOutputStream();
OutputStream out = new BufferedOutputStream(os);
InputStream is = openHttpConnection("<URL to the stream>");
copyStream(is, out);
而對於副本流代碼:
private static void copyStream(InputStream input, OutputStream output)
throws IOException {
int bytesRead;
try {
while ((bytesRead = input.read()) != -1) {
output.write(bytesRead);
}
} catch (Exception e) {
e.printStackTrace();
}
output.flush();
output.close();
input.close();
}
有什麼我可以做簡單的轉發所有的套接字連接元數據?或者我還在做其他問題?
是否有任何從Android手機向媒體播放器提供視頻的示例我可以使用它來了解如何正確設置響應流的格式?
謝謝!
*「不幸的是,三星電視唐不接受指向本地網絡之外的URL「*。這恐怕不是三星本身的錯,但是我擔心整個UPnP的設計限制。 –
談論元數據迷失:什麼是原始數據源?它是否符合UPnP標準?不管你傳遞的是多麼巧妙,UPnP元數據都不是流URL的一部分。但你已經有某個地方的網址......我很困惑。 –