Ricardo Constantino
11289d5238
ytdl_hook: try to set video track first if available
...
Fixes `--ytdl-format="dash-fastly_skyfire-video-363357330+dash-fastly_skyfire_sep-audio-363357330" https://vimeo.com/108650530 `
This happened because the video track also had audio available and after
adding it expecting an audio-only track, there were no more tracks with video.
2018-05-03 22:03:48 +03:00
wm4
c647516278
ytdl_hook: don't log error when loading is aborted
2018-04-15 21:07:13 +03:00
Ricardo Constantino
f670c64e59
ytdl_hook: add ytdl:// prefix again for non-youtube playlists
...
Only youtube playlists return ID-only urls. Other extractors may
return "<extractor>:<ID>" so those still need the ytdl:// prefix.
Reproduced with
http://www.cbc.ca/burdenoftruth/videos/trailers-promos/burden-of-truth-returns
2018-02-11 23:27:37 -08:00
Ricardo Constantino
57228b6581
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.
2018-02-11 23:27:37 -08:00
Ricardo Constantino
664e8fe66a
ytdl_hook: parse youtube playlist urls to set start index
...
Still needs `--ytdl-raw-option=yes-playlist=` because this only
works for youtube.
This was requested in a few issues:
https://github.com/mpv-player/mpv/issues/1400
https://github.com/mpv-player/mpv/issues/2592
https://github.com/mpv-player/mpv/issues/3024
For #1400 to be completely implemented would need ytdl_hook to
re-request the same playlist with the last video's ID for the mix to
continue indefinitely which would probably too hackish to work reliably.
2018-02-11 23:27:36 -08:00
Ricardo Constantino
976daf1942
ytdl_hook: exit early, save an indentation level
2018-02-11 23:27:36 -08:00
Ricardo Constantino
bf3549839e
ytdl_hook: various nit
...
Remove obsolete comment about FFmpeg ignoring non-http proxies
which was repeated in ytdl_hook before the feature was added.
Remove unnecessary conditions for not nil. Lua tables will always
return nil for non-existent keys.
2018-02-11 23:27:36 -08:00
Ricardo Constantino
3e71eb8676
ytdl_hook: whitelist subtitle URLs as well
...
This was overlooked when doing the whitelisting for video and audio to
fix #5456 .
2018-02-11 23:25:56 -08:00
Ricardo Constantino
268431c858
ytdl_hook: use fallback if there's no demuxer-lavf-list prop
...
This is important if backporting by grabbing the latest version of
the script without backporting the commit that added the property:
828bd2963c
2018-02-11 23:25:05 -08:00
Ricardo Constantino
eaa97daf65
ytdl_hook: pass http proxy to ffmpeg
...
FFmpeg only suppports http proxies and ignores it if
the resulting url is https. Also, no SOCKS.
Use it like `--ytdl-raw-options=proxy=[http://127.0.0.1:3128 ]` so
it doesn't confuse mpv because of the colons.
You need to pass it as an option because youtube-dl doesn't give
us the proxy.
Or just set `http_proxy` environment variable as recommended before.
Added example using -append, which doesn't need escaping.
2018-01-30 12:19:34 +00:00
Ricardo Constantino
93403b13a4
ytdl_hook: pre-append id-only playlist items with shortened youtube URL
2018-01-29 21:39:12 +00:00
Ricardo Constantino
2a0f9fc158
ytdl_hook: whitelist segmented DASH and HLS for the manifests code
...
Close #5453
2018-01-27 12:24:40 +00:00
Ricardo Constantino
7eb3427573
ytdl_hook: prefer hls/dash manifest if available
...
This makes all the video/audio variants available for selection.
Might break with non-hls/dash, or even with dash if FFmpeg wasn't
compiled with the demuxer.
2018-01-26 20:57:10 +00:00
Ricardo Constantino
ce42a96533
ytdl_hook: fix safe url checking with EDL urls
2018-01-26 18:54:17 +00:00
Ricardo Constantino
f8263e82cc
ytdl_hook: move url_is_safe earlier in code
...
lua isn't javascript.
2018-01-26 11:29:55 +00:00
Ricardo Constantino
e6e6b0dcc7
ytdl_hook: whitelist protocols from urls retrieved from youtube-dl
...
Not very clean since there's a lot of potential unsafe urls that youtube-dl
can give us, depending on whether it's a single url, split tracks,
playlists, segmented dash, etc.
2018-01-26 01:47:43 +00:00
Ricardo Constantino
86004909ac
ytdl_hook: support native dash demuxer, if present
...
Uses track tbr instead of track disposition id for dash selection
Works just as expected because youtube-dl also takes tbr from the manifests.
2018-01-15 11:20:02 +00:00
Ricardo Constantino
b478d2b1ce
ytdl_hook: look for the right ytdl binary according to system
...
package.config is available in 5.1, 5.2, 5.3 and luajit, so should be fine.
The first character is the path separator, so it's '\' on windows and '/'
on *nix.
This should also prevent cases where users download the wrong binary.
2018-01-12 18:17:37 +00:00
Ricardo Constantino
2d6fdccb92
ytdl_hook: be more informative when youtube-dl fails
2018-01-12 01:52:37 +00:00
Ricardo Constantino
154ff98128
ytdl_hook: don't try to use webpage_url if non-existent
2018-01-11 00:16:53 +00:00
Ricardo Constantino
b62066433d
ytdl_hook: actually use the script option from 87d3af6
2018-01-07 16:15:47 +00:00
Ricardo Constantino
87d3af6f19
ytdl_hook: add script option to revert to trying youtube-dl first
...
Should only make a difference if most of the URLs you open need
youtube-dl parsing.
2018-01-07 15:56:55 +00:00
Ricardo Constantino
cf8855cd2e
ytdl_hook: check for possible infinite loop in playlist generation
2018-01-06 18:43:46 +00:00
Ricardo Constantino
442ff93626
ytdl_hook: add additional check for comedycentral urls
...
If this breaks another site again, remove this whole if and just leave them as
separate playlist items.
Close #5364
2018-01-06 18:22:08 +00:00
Ricardo Constantino
cf411a9489
ytdl_hook: update obsolete warning about retrying URL if failed
2018-01-04 20:35:43 +00:00
Ricardo Constantino
89f81da481
player: add on_load_fail hook
2018-01-02 16:01:22 +00:00
Ricardo Constantino
0da5688c84
ytdl_hook: fix single-entry playlists
...
Close #5313
2018-01-02 14:28:03 +00:00
Ricardo Constantino
b1b03da137
ytdl_hook: use table concat for playlist building
...
Faster and more efficient than string concat with large playlists.
2017-12-24 14:13:57 -07:00
Ricardo Constantino
1623430b20
ytdl_hook: don't preappend ytdl:// to non-youtube links in playlists
...
Close #5003
2017-12-24 14:13:57 -07:00
Kevin Mitchell
985e83e217
Revert "ytdl: handle HLS with FFmpeg"
...
Apparently, this breaks youtube live and possibly other things.
This reverts commit 06519aae58 .
2017-12-07 00:46:27 -08:00
wm4
06519aae58
ytdl: handle HLS with FFmpeg
...
Using youtube-dl's metadata ends up with stupid things like missing
variant streams, or missing audio streams entirely.
2017-12-06 23:59:59 -08:00
Ricardo Constantino
d280b3db93
ytdl_hook: resolve relative paths when joining segment urls
...
FFmpeg/mpv don't do it automatically.
See #4827
2017-09-03 13:42:51 +01:00
Ricardo Constantino
2b83f7e391
ytdl_hook: support fragments with relative paths
...
Unbreaks segmented DASH with the change in
https://github.com/rg3/youtube-dl/commit/1141e9104 which made each
segment URL only use relative path from fragment_base_url with a
different key.
2017-08-06 13:27:53 +01:00
Jagannathan Tiruvallur Eachambadi
46bfa3726f
ytdl_hook: add a header to support geo-bypass
...
youtube-dl supports bypassing some geographic restrictions by
setting X-Forwarded-For header when used with geo-bypass and
geo-bypass-country.
2017-07-16 13:20:17 +01:00
Ricardo Constantino
db60cbb80a
ytdl_hook: actually load the script-opts
...
Also, comma-separated list doesn't actually work, even quote-surrounded.
Switch to using | instead.
2017-07-11 23:42:22 +01:00
Ricardo Constantino
042e98f4c9
ytdl_hook: add option to exclude URLs from being parsed
...
This is more of a niche usecase than --ytdl-format and --ytdl-raw-options,
so a simple script option should be enough.
Either create lua-settings/ytdl_hook.conf with
'exclude=example.com,sub.example.com' option or
"--script-opts=ytdl_hook-exclude=example.com,sub.example.com"
2017-07-11 14:18:29 +01:00
Ricardo Constantino
b1165ce3a2
ytdl_hook: add times for ytdl and hook running on debug-level
...
Not really important, but still interesting to know.
2017-07-11 14:16:35 +01:00
Ricardo Constantino
41b3b11669
ytdl_hook: add pre-parsed chapters, if available
...
Available since 2017.05.07 but only on certain extractors.
2017-07-02 21:15:15 +01:00
Martin D
30cd963b25
ytdl_hook: don't override start time set by saved state
...
This affects resuming playback from a watch_later directory so that you can resume playback even for URLs that have a start parameter.
2017-06-09 11:13:24 +01:00
Ricardo Constantino
289b11553b
ytdl_hook: don't override user-set start time
2017-06-08 19:45:49 +01:00
Ricardo Constantino
ce78f1222f
ytdl_hook: rework edl joining to use lua tables
...
Seems much more resource efficient than concatenating a string.
2017-05-04 17:10:07 +01:00
Ricardo Constantino
3526b95aaf
ytdl_hook: treat single-entry playlists as a single video
2017-04-23 01:53:59 +01:00
Ricardo Constantino
d5517f0d9f
ytdl_hook: move single video code to a separate function
2017-04-23 01:53:57 +01:00
Ricardo Constantino
6ac3d77e90
ytdl_hook: support livestream segmented DASH VODs
...
Seen with a VOD of a recently ended livestream on Youtube.
They seem to use segmented DASH but unlike normal Youtube
segmented DASH, the segments don't seem to need the initialization
segment.
The video actually fails to start to play if the init segment is
prepended with a lot of 'Found duplicated MOOV Atom. Skipped it' errors
popping up.
2017-02-10 20:24:03 +00:00
Ricardo Constantino
5fbad204a6
ytdl_hook: reenable support for length-less segments in EDL
...
They're unsupported only in MP4 DASH mode.
2017-02-06 16:50:28 +00:00
wm4
19551200d5
ytdl_hook: fix EDL syntax
...
All entries must be separated by ";" or "\n". The parser just doesn't
enforce it if an entry uses quoting.
2017-02-05 16:02:22 +01:00
Ricardo Constantino
7e6b37be07
ytdl_hook: Add non-dash fallbacks to default formats
2017-02-04 22:34:47 +01:00
wm4
61202bb364
ytdl_hook, edl: implement pseudo-DASH support
...
We use the metadata provided by youtube-dl to sort-of implement
fragmented DASH streaming.
This is all a bit hacky, but hopefully a makeshift solution until
libavformat has proper mechanisms. (Although in danger of being one
of those temporary hacks that become permanent.)
2017-02-04 22:34:38 +01:00
Ricardo Constantino
a46fc5e5eb
ytdl: support segmented dash
2017-02-04 22:19:21 +01:00
Ricardo Constantino
e017c24174
ytdl_hook: refactor edl track joining
...
Only used once for now.
Also, support switched format strings, like bestaudio+bestvideo.
2017-01-30 16:21:44 +00:00