gpt4 book ai didi

java - 将实时视频流式传输到 MediaPLayer

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:26:20 25 4
gpt4 key购买 nike

我正在尝试在连接到同一 WiFi 网络的两台 Android(API 9+)设备之间实现视频流传输。第一个作为小型 http 服务器运行的设备,使用 MediaRecorder 记录来自摄像机的视频。第二个设备正在尝试使用 MediaPlayer 类的 setDataSource 方法获取数据。

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

我知道首先我需要发送正确的 header ,否则 MediaPlayer 将无法查看数据。这些是我的问题:

  1. 应该如何将正确的 header 发送到 MediaPlayer?
  2. 对于在 API 9+ 的 Android 设备之间流式传输视频是否有更简单的解决方案?

我将不胜感激所有的建议。

编辑:

由于我的问题过于笼统,我会尝试更具体一些。基于此线程:Live-stream video from one android phone to another over WiFi我决定创建一个小型 http 服务器(使用 ServerSocket)。当第二台设备尝试通过 MediaPlayer 连接时,我可以使用

从服务器向它发送数据
socket.getOutputStream().write(buff, 0, readBytes);

但在发送数据之前,我必须将 header 添加到响应中。

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)

最佳答案

要发送 header ,您必须按如下方式将它们放在 Map 中:

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

media_player.setDataSource(
getApplicationContext(),
Uri.parse("http://url:port"),
headers
);

关于java - 将实时视频流式传输到 MediaPLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39026040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com