From 57228b65810f1026f1ac10a0df86d7434289c345 Mon Sep 17 00:00:00 2001 From: Ricardo Constantino Date: Sat, 10 Feb 2018 00:06:36 +0000 Subject: ytdl_hook: add script opt for using manifest URLs Disable by default. This feature was added in 7eb342757, which allowed stream selection in runtime. Problem with this atm is that FFmpeg will try to demux every first packet of every track leading to noticeable delay opening the URL. This option can be changed to enabled by default or removed when HLS/DASH demuxers are improved upstream. --- DOCS/man/options.rst | 4 ++++ player/lua/ytdl_hook.lua | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index 0ffd6c783a..14a901751d 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -560,6 +560,10 @@ Program Behavior which mpv should not use with youtube-dl. The patterns are matched after the ``http(s)://`` part of the URL. + The `use_manifests` script option makes mpv use the master manifest URL for + formats like HLS and DASH, if available, allowing for video/audio selection + in runtime. It's disabled ("no") by default for performance reasons. + ``^`` matches the beginning of the URL, ``$`` matches its end, and you should use ``%`` before any of the characters ``^$()%|,.[]*+-?`` to match that character. diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua index 59ffbd3b94..3c5068bfd7 100644 --- a/player/lua/ytdl_hook.lua +++ b/player/lua/ytdl_hook.lua @@ -4,7 +4,8 @@ local options = require 'mp.options' local o = { exclude = "", - try_ytdl_first = false + try_ytdl_first = false, + use_manifests = false } options.read_options(o) @@ -279,7 +280,7 @@ local function add_single_video(json) local reqfmts = json["requested_formats"] -- prefer manifest_url if present - if valid_manifest(json) then + if o.use_manifests and valid_manifest(json) then local mpd_url = reqfmts and reqfmts[1]["manifest_url"] or json["manifest_url"] if not mpd_url then -- cgit v1.2.3