AndroidフォンでSamsungSmartTVでのビデオストリームの再生を制御したい。ビデオストリームへのURLを使用してUPnPコマンドをテレビに送信できます。残念ながら、SamsungTVはローカルネットワークの外部を指すURLを受け入れません。リモートストリームを機能させるには、Samsung TVへのローカルURLのように見えるように、電話を介してトラフィックをループする必要があります。
私はおそらく電話でサーバーの単純なプロキシタイプを実行する必要があります。電話は常にストリームURLが何であるかを知っているので、プロキシは常に着信要求を受け取り、それを外部サーバー上のビデオストリームにパイプする非常に単純なものにすることができます。
ソケット接続を実行し、入力ストリームを外部サーバーからソケットサーバー接続の出力ストリームにコピーしてみました。これを使用している間、Webブラウザーはファイルをダウンロードできますが、すべてのメタデータが失われ、ファイルのダウンロードが完了するたびにパイプの破損の例外が発生するようです。メディアプレーヤーはストリームをまったく理解していないようで、たとえば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携帯からメディアプレーヤーにビデオを提供する例はありますか?
ありがとう!!