2016-08-18 6 views
1

Android(API 9+)が同じWiFiネットワークに接続された2台のデバイス間でビデオストリーミングを実装しようとしています。最初のデバイスは、MediaRecorderを使用してカメラからのビデオを記録する小さなhttpサーバとして動作します。 2番目のデバイスは、MediaPlayerクラスのsetDataSourceメソッドを使用してデータを取得しようとしています。ライブビデオをMediaPLayerにストリーム

mediaPlayer.setDataSource("http://serverIP:port") 

私は最初に正しいヘッダを送信する必要があることを知っています。それ以外の場合、MediaPlayerはデータを表示できません。これらは私の質問です:

  1. MediaPlayerに送信される正しいヘッダーはどのように見えるでしょうか?
  2. API 9以降のアンドロイドデバイス間でビデオをストリーミングするための簡単なソリューションはありますか?

私はすべてのアドバイスに感謝します。

編集:私の質問は、私はより具体的にしようとしすぎて一般的だったので

。このスレッドに基づいて:Live-stream video from one android phone to another over WiFi私は(ServerSocketを使用して)小さなhttpサーバーを作成することにしました。第2のデバイスはMediaPlayerのを経由して接続しようとするとき、私は

socket.getOutputStream().write(buff, 0, readBytes); 

を使用して、サーバーからそれにデータを送信することができます。しかし、データを送信する前に、私は応答にヘッダを追加する必要があります。

StringBuilder stringBuilder = new StringBuilder(); 
stringBuilder.append("HTTP/1.1 206 Partial Content\r\n"); 
stringBuilder.append("Content-Type: video/mp4\r\n"); 
stringBuilder.append("Accept-Ranges: bytes\r\n"); 
stringBuilder.append("Content-Length: XXXX\r\n\r\n"); 
socket.getOutputStream().write(stringBuilder.toString().getBytes()); 

これは私の問題です。 MediaPLayerが理解できるメッセージのヘッダーにどの情報を追加するべきかわかりません。あなたは次のように地図でそれらを配置する必要がヘッダを送信するには

I/MediaHTTPConnection: response code = 206 
V/MediaPlayer: message received msg=100, ext1=1, ext2=-2147483648 
E/MediaPlayer: error (1, -2147483648) 
+0

は、スタックオーバーフローへようこそ。 [How to Ask](http://stackoverflow.com/help/how-to-ask)をお読みください。複数の質問がある質問は、答えるのが難しいです。また、あなたが試した、および/または調査したことを共有してください。 – zhon

答えて

0

:私は次のメッセージを参照してくださいログで瞬間

Map<String, String> headers = new HashMap<>(); 
headers.put("Header", "Value"); 

media_player.setDataSource(
    getApplicationContext(), 
    Uri.parse("http://url:port"), 
     headers 
); 
関連する問題