在上传时观看视频

时间:2012-06-11 22:14:59

标签: ruby-on-rails video-streaming

可以实现一项功能,允许用户在视频被其他人上传到服务器时观看视频。 html 5适合这个任务吗?但闪光?是否有任何阅读解决方案,不想重新发明轮子。该应用程序将托管在专用服务器上。

感谢。

3 个答案:

答案 0 :(得分:3)

当然有可能,数据不存在吗?

但实施起来非常困难。

另外我对python不是很了解,我不知道哪个库或服务符合您的要求,但我可以涵盖视频流的基础知识。

我假设你在谈论上传的视频文件,而不是流。因为,为此,显然有成千上万的解决方案......

在最简单的情况下,正在上传的视频已经准备好提供给您的客户,并且有一个所谓的“快速启动原子”。它们是特定于容器格式的,有时会有一堆。最常见的是moov-atom。它包含大量数据并且非常复杂,但在我们的使用案例中,简而言之,它保存了数据,使客户能够使用从头开始的数据立即开始播放视频。

如果您有渐进式下载视频(youtube ...),则需要这样做,这意味着从Web服务器提供文件的位置。你显然没有下载完整的文件,玩家已经可以开始玩了。

如果不存在fastastart原子,那是不可能的。 有时它是,但播放器例如无法显示进度条,因为它不知道文件有多长。

覆盖文件可以上传。您将需要一个上传解决方案,将数据直接写入缓冲区或文件。 (文件会更容易......)。

几乎总是如此,例如PHP在tmp_dir中创建一个文件。如果要在上传视频时查找视频,也可以指定它。

好了,现在您可以逐字节地开始读取该文件,并将该数据打印到与另一个客户端的连接。请务必不要超过已经收到和写的内容。您可以使用内存中保存当前接收的字节位置和文件位置的元数据来启动上传。

在上传开始后请求文件的任何人都可以收到整个文件,或者如果上传尚未完成,请从您的应用程序中获取。

当数据变短时,您必须限制数据传输或暂停。这对客户来说几乎就像一个“慢速连接”。但是,您必须不时回显一些数据以防止连接关闭。但是,如果你的上传没有停止,为什么要这么做呢?那不应该是个问题。

现在,如果您想要将各种输入格式的转码转换为您想要的输出格式,那么事情会变得很有趣。

AFAIK ffmpeg有一个简洁的apis,让你直接处理datasterams。

手刹也是一个非常好的工具,但你需要使用外部可执行文件来走很长的路。

我并不是真的了解您的要求,但是如果您的客户已经调整过,例如在红色5流媒体服务器上,将数据输入流也应该可以正常工作。

答案 1 :(得分:1)

是的,看看Qik,http://qik.com/

“即时视频分享...视频可以直播(正在录制时)或以后随时查看。”

Qik提供开发人员API,包括以下内容:

  • qik.stream.subscribe_public_recent - 订阅视频(直播和录制)

  • qik.user.following - 提供用户关注的人员列表

  • qik.stream.public_info - 获取特定视频的公开信息

答案 2 :(得分:1)

这肯定是这样做的,但这不会是微不足道的。不,我不认为你会找到一个“开箱即用”的解决方案,代表你需要付出很少的努力。

你说你想让:

users watch videos as they are uploaded to server by others

嗯,这可以通过两种不同的方式解释:

  1. 您是说在看到其他用户刚刚完成上传的新视频之前,您不希望用户必须刷新页面吗?
  2. 或者你的意思是你希望一个用户能够观看部分上传的视频(也就是说另一个用户仍然在上传它,现在服务器只包含视频的部分上传)?
  3. 实施#1并不难。您只需要一个AJAX脚本来检查新上传的视频,然后可以以您选择的任何方式将这些视频提供给用户。 HTML5与Flash在这里并不是一个考虑因素。

    另一方面,第二种情况需要相当多的努力。我猜测HTML5可能还不够成熟,无法处理这种情况。如果你不看 重新发明轮子并且没有太多时间专注于这个功能,而不是说你会失去运气。您可以使用ffmpeg来解析部分视频文件并将其提供给Flash播放器,但我认为这是一项大任务。