据我所知,我可以发送范围请求来下载流媒体网络视频的特定时间范围。
我现在想知道是否可以只从视频中请求MP3或AAC音频流,以便在我的服务器上只下载音频。
据我所知,这是可能的,但我还没有在网上找到任何合法的解决方案或方法,所以我真的不知道从哪里开始。
答案 0 :(得分:6)
假设您正在讨论基于HTTP的流,这实际上并不可行。我真的不推荐尝试它,除非你有非常特殊的需要和很多时间在手上。
有可能吗?也许。首先,您必须拥有支持范围请求的HTTP服务器。如果是,那么您必须了解容器格式。为此,你必须开始下载文件并弄明白。
大多数容器将流交错在一起。也就是说,您将拥有视频的一大块字节,音频的一大块字节以及存在的任何其他流的块。出于演示目的,假设视频仅具有音频流和视频流,并且每个块包含1秒的内容。交错看起来像这样:
HEADERS A V A V A V A V A V A V A V ...
HEADERS
是容器用于设置流的所有内容。 A
是音频流块,V
是视频流块。
如果您只想下载一个流,您必须能够自己解析该容器格式,下载容器标题以及容器所需的任何其他数据,然后对所有块进行范围请求。您想要的特定流。根据交错,最终,这可能不是非常有效!
当您下载数据时,您需要将其写回实际可以使用的文件,这意味着您可能需要编写一些自定义代码,或者欺骗FFMPEG为您编写。< / p>