Add dash support for videos that already have manifest

This commit is contained in:
Omar Roth 2018-07-15 20:39:56 -05:00
parent c19b373944
commit f05afaf342
1 changed files with 22 additions and 2 deletions

View File

@ -678,8 +678,6 @@ get "/redirect" do |env|
end end
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| get "/api/manifest/dash/id/:id" do |env|
env.response.headers.add("Access-Control-Allow-Origin", "*") env.response.headers.add("Access-Control-Allow-Origin", "*")
env.response.content_type = "application/dash+xml" env.response.content_type = "application/dash+xml"
@ -694,6 +692,28 @@ get "/api/manifest/dash/id/:id" do |env|
halt env, status_code: 403 halt env, status_code: 403
end 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 adaptive_fmts = [] of HTTP::Params
if video.info.has_key?("adaptive_fmts") if video.info.has_key?("adaptive_fmts")
video.info["adaptive_fmts"].split(",") do |string| video.info["adaptive_fmts"].split(",") do |string|