【发布时间】:2015-07-26 22:11:50
【问题描述】:
我使用youtube-dl 获取 YouTube 视频二进制流的 URL,无论出于何种原因我想下载,我都是这样做的:
youtube-dl -f bestaudio -g --skip-download https://www.youtube.com/watch?v=nk5YtLYcH74
获得 URL 后,我将其 卷曲,就像这样:
https://r6---sn-gqn-vhgl.googlevideo.com/videoplayback\?id\=afe82f21e356....
或者我当然可以将输出转发到文件中,但这只是为了解释。我想下载它,但不是用 curl,而是用 Scala HTTP 客户端,现在是akka-http。但这样我得到:
IllegalResponseException: Response Content-Length 195022703 exceeds the configured limit of 8388608
我知道这是一个很大的流,但是 curl 是如何自动完成的呢?它如何请求块,或者它是如何工作的,我应该如何用 Scala/Java 编写它?
一些代码和more:
val connectionFlow = Http().outgoingConnectionTls(hostname)
val responseFuture =
Source.single(HttpRequest(uri = path, method = GET))
.via(connectionFlow)
.runWith(Sink.foreach[HttpResponse] { r =>
logger.info(s"${r.status}")
})
【问题讨论】:
-
"curl 是如何自动完成的?" -> 没有限制。
标签: java scala youtube chunked