当然有可能,数据有没有?
但是实施起来会非常困难。
此外,我对 python 不是很感兴趣,我不知道适合您要求的库或服务,但我可以涵盖视频流的基础知识。
我假设您正在谈论上传而不是流式传输的视频文件。因为,为此,显然有成千上万的解决方案......
在最简单的情况下,上传的视频已经准备好提供给您的客户,并且具有所谓的“快速启动原子”。它们是特定于容器格式的,有时会有一堆。最常见的是moov-atom。它包含大量数据并且非常复杂,但是在我们的用例中,简而言之,它包含使客户端能够使用从一开始就可用的数据立即开始播放视频的数据。
如果您有渐进式下载视频(youtube ...),则需要它,这意味着文件是从 Web 服务器提供的。您显然还没有下载完整的文件,播放器已经可以开始播放了。
如果 fastastart 原子不存在,那将是不可能的。有时是这样,但播放器无法显示进度条,因为它不知道文件有多长。
覆盖该文件后,可以上传。您将需要一个将数据直接写入缓冲区或文件的上传解决方案。(文件会更容易......)。
几乎总是这样,例如 PHP 在 tmp_dir 中创建一个文件。如果您想在上传视频时找到它,也可以指定它。
好吧,现在您可以开始逐字节读取该文件并将该数据打印到与另一个客户端的连接。只要确保不要超过已经收到和写好的东西。您可能会使用内存中设置的元数据启动上传,该元数据包含文件的当前接收字节位置和位置。
在上传开始后请求文件的任何人都可以收到整个文件,或者如果上传尚未完成,请从您的应用程序中获取。
当数据变短时,您将不得不限制数据传输或暂停它。这在客户端看来几乎是“慢速连接”。但是,您必须不时回显一些数据以防止连接关闭。但是,如果您的上传没有停止,为什么要这样做?那应该不是问题。
现在,如果您想将各种输入格式即时转码为所需的输出格式,事情就会变得有趣。
AFAIK ffmpeg 具有简洁的 API,可让您直接处理数据流。
手刹也是一个非常好的工具,但是您需要使用外部可执行文件走很长的路。
我并不真正了解您的要求,但是如果您的客户已经调好,例如在红色 5 流服务器上,将数据输入流也应该可以正常工作。