9

我一直在谷歌搜索,但我仍然无法得到它。有人说:给你,用就行。其他人声称它有某些限制,不允许您在 Flash 中以您希望的方式使用 p2p。

所以,这里有一个简单的问题:是否有可能实现一个 Flash10 应用程序,它使用一些现有的 torrent 文件将视频/音频直接流式传输到用户的浏览器中?

如果没有 - 为什么?这个“不”有什么可能的解决方法吗?如果是 - 实施的困难是什么?为什么还没有人真正做到这一点?

4

4 回答 4

12

答案几乎是不......嗯,它只是不,老实说。
@drudru 指出了适用于 flash p2p 的正确技术,即 Stratus。

Flash p2p 基于 RTMFP,它建立在 UDP 之上。实际上,flash 确实绑定了一个端口,但这来自内部。没有 API 可以手动执行此操作。

RTMFP 基本上允许两件事:

  1. 用于视频和音频的 UDP 流式传输(不可靠,但速度快)。从 Flash 端,您只能发布您的相机和麦克风流。从服务器,几乎任何东西。
  2. 对 p2p 连接的另一个端点进行远程调用。这可用于传输数据。这种通信是安全的,即包顺序和完整性由 Flash 播放器维护。

p2p 基于 NAT 穿透。Stratus 本身就是介绍服务器。此外,出于安全目的,p2p 连接也意味着,两个客户端都必须有一个空闲的 TCP(如果我没记错的话)连接到服务器。我想,当然会传输一些数据,但不会传输有效载荷。

但是,torrent 协议与此有很大不同。因此,这不是一个选择。您可以在 RTMFP 之上构建等效协议,对 stratus 服务进行逆向工程(或等到它开源)。这当然也可以由非闪存客户端使用。但是同样,您将无法将传输的数据作为视频观看,因为您将获得 is 作为对您的客户端的某些调用的参数NetStream,可能是ByteArray. 而且您无法播放ByteArrays。您可以编写非 Flash 客户端,将视频作为流发布,但这与您想要的相去甚远,我猜。

如果你真的想做这样的事情,你需要 Java。您可以签署 Java 小程序,如果用户接受证书,他们实际上可以不受限制地访问,例如您可以绑定端口。由于Java可以做UDP,你可以有一个Java小程序,它做种子下载(也许只使用Vuze代码库),如果你真的想在flash中显示它(这又需要flv),那么你可以模仿一个本地“ Flash Media Server”并在 localhost:someport 上发布视频。但实际上,闪存位对我来说似乎非常复杂和无用。而是尝试使用 Java 进行回放,希望它可以选择在本地进行。

于 2009-07-10T18:13:03.307 回答
2

Flash 不允许您在套接字上侦听传入连接。这将使使用现有种子变得非常困难。考虑到这方面的安全问题,我认为它不会发生。

然而,Adobe 已经启动了他们自己的 P2P 系统版本,称为 Stratus。你可以在这里阅读http://labs.adobe.com/technologies/stratus/

于 2009-07-10T17:31:42.063 回答
2

所有这些信息现在都已经过时了。

于 2010-03-29T22:49:00.727 回答
0

嗯……这是一个有趣的提议,只将下载的文件保留在 Flash 的内存中。我认为这当然是可能的,但可能很慢,而且您的上限为几百兆字节。

编辑:这是不可能的,因为你不能只使用 Flash 来监听端口,浏览器没有那种能力。

于 2009-07-10T17:30:39.413 回答