【发布时间】:2016-08-19 15:46:29
【问题描述】:
我正在尝试在连接到同一个 WiFi 网络的 Android(API 9+)的两台设备之间实现视频流。第一个作为小型 http 服务器运行的设备,它使用 MediaRecorder 记录来自摄像机的视频。第二台设备正在尝试使用 MediaPlayer 类中的 setDataSource 方法获取数据。
mediaPlayer.setDataSource("http://serverIP:port")
我知道首先我需要发送正确的标头,否则 MediaPlayer 将无法查看数据。这些是我的问题:
- 应该如何看待正确的标头发送到 MediaPlayer?
- 是否有更简单的解决方案在使用 API 9+ 的 Android 设备之间流式传输视频?
我将不胜感激。
编辑:
由于我的问题过于笼统,我将尝试更具体一些。基于此线程: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)
【问题讨论】:
-
欢迎来到 Stack Overflow。请阅读How to Ask。一个有多个问题的问题很难回答。也请分享您尝试和/或研究的内容。