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