java - Scala/Java 中的分块下载

标签 java scala youtube chunked

我使用youtube-dl要获取 YouTube 视频的二进制流的 URL,无论出于何种原因我想下载该视频,我都会这样做:

youtube-dl -f bestaudio -g --skip-download https://www.youtube.com/watch?v=nk5YtLYcH74

获得 URL 后,我 curl 它,就像这样:

https://r6---sn-gqn-vhgl.googlevideo.com/videoplayback\?id\=afe82f21e356....

或者我当然可以将输出转发到文件中,但这只是为了解释。我想下载它,但暂时不是使用curl,而是使用Scala HTTP 客户端 akka-http 。但这样我得到:

IllegalResponseException:响应内容长度 195022703 超出配置的限制 8388608

我知道这是一个很大的流,但是curl是如何自动完成的呢?它如何请求 block ,或者它是如何工作的,我应该如何在 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}")
  })

最佳答案

akka-http 的默认内容长度为 8M。

增加 application.conf 文件中 akka http 客户端解析的 max-content-length 值,它应该可以正常工作。

akka.http.client.parsing.max-content-length =78m

有关此链接的 session 和信息的更多信息 http://doc.akka.io/docs/akka-stream-and-http-experimental/1.0/scala/http/configuration.html

关于java - Scala/Java 中的分块下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31642460/

相关文章:

java - 如何在 Java EE 中使用 XmlRepresentation?

iphone - 如何使用嵌入式 HTML 检查 youtube 视频是否存在

java - 从剪贴板到文件

java - Spark java.lang.NoClassDefFoundError : com/datastax/driver/core/ProtocolOptions$Compression 中的 Spark-cassandra-connector 错误

parsing - Scala 解析器组合器中的错误和失败

scala - Spark Scala GraphX : Shortest path between two vertices

javascript - Youtube Media API无法正确加载。

html - 视频标签中的 YouTube 网址

java - Multi-Tenancy 迁移以使用 quarkus

Java JFrame 方法 pack()