我正在尝试实现两个设备之间的视频流(API 9+)连接到同一个WiFi网络。第一个设备作为一个小型http服务器运行,它使用MediaRecorder从摄像机记录视频。第二个设备试图使用setDataSource方法从MediaPlayer类获取数据。
mediaPlayer.setDataSource("http://serverIP:port")我知道,首先我需要发送正确的头,否则MediaPlayer将无法查看数据。以下是我的问题:
我将感谢所有的建议。
编辑:
由于我的问题过于笼统,我将尽量更加具体。基于这个线程:Live-stream video from one android phone to another over WiFi,我决定创建一个小型http服务器(使用ServerSocket)。当第二个设备试图通过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)发布于 2016-08-18 19:43:46
要发送标头,必须将它们放在Map中,如下所示:
Map<String, String> headers = new HashMap<>();
headers.put("Header", "Value");
media_player.setDataSource(
getApplicationContext(),
Uri.parse("http://url:port"),
headers
);https://stackoverflow.com/questions/39026040
复制相似问题