【问题标题】:download ONLY audio from a streaming video?仅从流媒体视频中下载音频?
【发布时间】:2013-02-24 06:44:58
【问题描述】:

我了解我可以发出范围请求以下载流式网络视频的特定时间范围。

我现在想知道是否可以从视频中仅请求 MP3 或 AAC 音频流,以便在我的服务器上只下载音频。

据我所知,这是可能的,但我还没有在网络上找到任何合法的解决方案或方法,所以我真的不知道从哪里开始。

【问题讨论】:

  • 我想你可能听说过ffmpeg 或类似的工具,它们可以做到这一点。示例herehere。但是,它必须在客户端请求下载文件之前在服务器上完成,也许可以近乎实时地完成。
  • 谢谢你……但关键是只下载音频,因此以可能更快的速度下载更少的数据。
  • 你不能那样做。你如何告诉客户下载这些位而不是那些?我的观点是你需要在服务器上做一些事情,以便服务器只提供音频位。我认为唯一的选择是使用类似 ffmpeg 的东西 :)
  • @SunilD.,您可以使用范围请求。 stackoverflow.com/a/8507991/362536

标签: javascript flash video-streaming html5-video audio-streaming


【解决方案1】:

假设您正在谈论基于 HTTP 的流,这实际上是不可行的。我真的不建议您尝试它,除非您有非常具体的需求并且手头有很多时间。

有可能吗?可能是。首先,您必须有一个支持范围请求的 HTTP 服务器。如果是这样,那么您必须对容器格式有所了解。为此,您必须开始下载文件并弄清楚这一点。

大多数容器将流交错在一起。也就是说,您将拥有一个用于视频的字节块、一个用于音频的字节块以及用于存在的任何其他流的块。出于演示目的,假设一个视频只有音频流和视频流,每个块包含 1 秒的内容。交错看起来像这样:

HEADERS A V A V A V A V A V A V A V ...

HEADERS 是容器用于设置流的所有内容。 A 是音频流块,V 是视频流块。

如果您只想下载一个流,您必须能够自己解析该容器格式,下载容器标头和容器所需的任何其他数据,然后针对该容器的所有块发出范围请求您想要的特定流。取决于交织,最后,这可能根本不是很有效!

当您下载数据时,您需要将其写回到您可以实际使用的文件中,这意味着您可能需要为此编写一些自定义代码,或者诱使 FFMPEG 为您编写它。

【讨论】:

  • 哇,真的很酷。至少我可以放心,可能的解决方案并不那么可行:)
猜你喜欢
  • 2013-12-04
  • 1970-01-01
  • 2014-10-12
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多