假设你说的是通过HTTP传输流,这实际上不太可行。除非你有特定的需求并且有充足的时间,否则我真的不建议尝试它。 可能吗?也许。首先,你必须拥有一个支持范围请求的HTTP服务器。如果有的话,那么你就必须了解一些容器格式的知识。为此,你需要开始下载文件并弄清楚它的格式。 大多数容器将流交替排列在一起。也就是说,你将会有一个视频字节块、一个音频字节块和任何其他存在的流的块。为了演示目的,假设一个视频只有一个音频流和一个视频流,每个块包含1秒钟的内容。交错排列如下:
HEADERS A V A V A V A V A V A V A V …HEADERS 是容器用于设置流的全部内容。A 是音频流块,V 是视频流块。 如果你想下载单个流,你必须自己能够解析容器格式,下载容器头和任何你需要的容器数据,然后为你想要的特定流的所有块进行范围请求。根据交错方式,最终,这可能并不高效! 当你下载数据时,你需要将其写回到实际可用的文件中,这意味着你可能需要编写一些自定义代码来实现,或者欺骗FFMPEG为你编写它。