2

我在 localhost 的 rtsp 服务器上有一个 rtsp 流。我想用 android 类 MediaPlayer 播放这个文件。

如果我做 setDataSource(rtsp://localhost/file.sdp) 它工作!

我的问题是......如果我将文件复制到我的 http 服务器上并且我这样做了

setDataSource(http://localhost/file.sdp) 

这没用!!我收到一个 I/O 异常。

filePath = "http://localhost/file.sdp";
mediaPlayer.setDataSource(filePath);
mediaPlayer.prepare();
mediaPlayer.start();

如果我用 vlc 应用程序播放这个文件,它就可以工作。

4

2 回答 2

1

RTSP“实时流媒体协议”用于流媒体服务器。您可以通过 RTSP 协议在您的计算机/移动设备上观看来自远程服务器的实时视频广播。此协议仅处理媒体文件的播放。以下是 RTSP 的一些功能:

  1. 这适用于 TCP 连接
  2. RTSP 请求都在同一个 TCP 连接上发送
  3. 该协议的端到端延迟非常小
  4. 这也称为“真正的流媒体”
  5. 没有文件下载到用户系统
  6. 实时播放电影
  7. 可以做直播
  8. 一些防火墙在用户的机器上阻止了这个协议

HTTP“超文本传输​​协议”用于在万维网上传输文件(文本、图形图像、声音、视频和其他多媒体文件)。HTTP 协议在远程服务器上托管的网页(包含文本、图形图像、声音、视频和其他多媒体)和用户系统上的浏览器之间进行通信。我们可以通过 HTTP 协议观看流媒体视频。以下是 HTTP 的一些特性:

  1. 这适用于 TCP 连接
  2. HTTP 通常会在单独的 TCP 上发送每个请求
  3. 与 RTSP 相比,该协议具有较高的端到端延迟
  4. 从标准 Web 服务器提供内容
  5. 这支持从 Web 服务器渐进式下载
  6. 文件已下载到用户系统,但可以在完全下载之前开始播放
  7. 这适用于所有防火墙,因为它使用标准 HTTP 协议

SDP“会话描述协议”由一组通信端点以及它们之间的一系列交互组成。SDP 包含有关流媒体的信息。它主要包含关于媒体的三个部分——会话描述、时间描述和媒体描述。SDP 本身不是一种文件类型,而是一种协议,负责流媒体。HTTP 和 RTSP 都支持 SDP。

于 2013-11-27T08:04:51.333 回答
1

RTSP 和 HTTP 是不同的协议。HTTP 服务器不会以相同的方式提供数据。它将发送 HTTP 标头等。VLC 可能足够聪明,可以根据它接收到的数据推断协议,但 Android 的 NuPlayer 可能没有那么复杂。

于 2013-10-29T03:04:03.000 回答