4

It is possible to implement a feature that allows users to watch videos as they are uploaded to server by others. Is html 5 suitable for this task? But flash? Are there any read to go solutions, don't want to reinvent the wheel. The application will be hosted on a dedicated server.

Thanks.

4

3 回答 3

3

当然有可能,数据有没有?

但是实施起来会非常困难。

此外,我对 python 不是很感兴趣,我不知道适合您要求的库或服务,但我可以涵盖视频流的基础知识。

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

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

如果您有渐进式下载视频(youtube ...),则需要它,这意味着文件是从 Web 服务器提供的。您显然还没有下载完整的文件,播放器已经可以开始播放了。

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

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

几乎总是这样,例如 PHP 在 tmp_dir 中创建一个文件。如果您想在上传视频时找到它,也可以指定它。

好吧,现在您可以开始逐字节读取该文件并将该数据打印到与另一个客户端的连接。只要确保不要超过已经收到和写好的东西。您可能会使用内存中设置的元数据启动上传,该元数据包含文件的当前接收字节位置和位置。

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

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

现在,如果您想将各种输入格式即时转码为所需的输出格式,事情就会变得有趣。

AFAIK ffmpeg 具有简洁的 API,可让您直接处理数据流。

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

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

于 2012-06-20T20:06:05.703 回答
1

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

你说你想让:

users watch videos as they are uploaded to server by others

好吧,这可以用两种不同的方式来解释:

  1. 您的意思是您不希望用户在看到其他用户刚刚完成上传的新视频之前必须刷新页面?
  2. 还是您的意思是您希望一个用户能够观看部分上传的视频(也就是另一个用户仍在上传它,而现在服务器只包含视频的部分上传)?

实施#1 一点也不难。您只需要一个 AJAX 脚本来检查新上传的视频,然后这些视频可以以您选择的任何方式提供给用户。HTML5 vs. Flash 在这里并不是真正的考虑因素。

另一方面,第二种情况需要相当多的努力。我猜 HTML5 可能还不够成熟,无法处理这种情况。如果您不打算重新发明轮子并且没有太多时间致力于此功能,那么我会说您会很不走运。您也许可以使用 ffmpeg 解析部分视频文件并将它们提供给 Flash 播放器,但我认为这是一项艰巨的任务。

于 2012-06-20T22:31:47.183 回答
1

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

“即时视频共享......视频可以实时观看(在录制时)或任何时间。”

Qik 提供开发人员 API,包括以下这些:

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

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

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

于 2012-06-20T07:19:16.553 回答