Add dash support for videos that already have manifest
This commit is contained in:
parent
c19b373944
commit
f05afaf342
1 changed files with 22 additions and 2 deletions
|
@ -678,8 +678,6 @@ get "/redirect" do |env|
|
|||
end
|
||||
end
|
||||
|
||||
# Return dash manifest for the given video ID, note this will not work on
|
||||
# videos that already have a dashmpd in video info.
|
||||
get "/api/manifest/dash/id/:id" do |env|
|
||||
env.response.headers.add("Access-Control-Allow-Origin", "*")
|
||||
env.response.content_type = "application/dash+xml"
|
||||
|
@ -694,6 +692,28 @@ get "/api/manifest/dash/id/:id" do |env|
|
|||
halt env, status_code: 403
|
||||
end
|
||||
|
||||
if video.info["dashmpd"]?
|
||||
manifest = client.get(video.info["dashmpd"]).body
|
||||
|
||||
manifest = manifest.gsub(/<BaseURL>[^<]+<\/BaseURL>/) do |baseurl|
|
||||
url = baseurl.lchop("<BaseURL>")
|
||||
url = url.rchop("</BaseURL>")
|
||||
|
||||
if local
|
||||
if Kemal.config.ssl
|
||||
scheme = "https://"
|
||||
end
|
||||
scheme ||= "http://"
|
||||
|
||||
url = scheme + env.request.headers["Host"] + URI.parse(url).full_path
|
||||
end
|
||||
|
||||
"<BaseURL>#{url}</BaseURL>"
|
||||
end
|
||||
|
||||
next manifest
|
||||
end
|
||||
|
||||
adaptive_fmts = [] of HTTP::Params
|
||||
if video.info.has_key?("adaptive_fmts")
|
||||
video.info["adaptive_fmts"].split(",") do |string|
|
||||
|
|
Loading…
Reference in a new issue