summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Constantino <wiiaboo@gmail.com>2017-01-25 15:33:05 +0000
committerRicardo Constantino <wiiaboo@gmail.com>2017-01-25 15:40:56 +0000
commitd303ebd9b6d46be4681b47043fda102811a36239 (patch)
treef6e6b690bac35001e9ec7376b790f7c723da2f83
parent39adaf3dcc3a0e03df8048d93324940b5f69df51 (diff)
downloadmpv-d303ebd9b6d46be4681b47043fda102811a36239.tar.bz2
mpv-d303ebd9b6d46be4681b47043fda102811a36239.tar.xz
stream_lavf: add support for data URIs
Only FFmpeg supports them and they need to be in the format data:// like other protocols or prefixed with ffmpeg:// or lavf://. Closes #4058
-rw-r--r--DOCS/man/mpv.rst4
-rw-r--r--player/lua/ytdl_hook.lua2
-rw-r--r--stream/stream_lavf.c1
3 files changed, 6 insertions, 1 deletions
diff --git a/DOCS/man/mpv.rst b/DOCS/man/mpv.rst
index 8f8651779c..db0382893d 100644
--- a/DOCS/man/mpv.rst
+++ b/DOCS/man/mpv.rst
@@ -673,6 +673,10 @@ PROTOCOLS
either aliases to documented protocols, or are just redirections to
protocols implemented and documented in FFmpeg.
+ ``data:`` is supported in FFmpeg (not in Libav), but needs to be in the
+ format ``data://``. This is done to avoid ambiguity with filenames. You
+ can also prefix it with ``lavf://`` or ``ffmpeg://``.
+
``ytdl://...``
By default, the youtube-dl hook script (enabled by default for mpv CLI)
only looks at http URLs. Prefixing an URL with ``ytdl://`` forces it to
diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua
index 1bae4f398c..a2b38ba036 100644
--- a/player/lua/ytdl_hook.lua
+++ b/player/lua/ytdl_hook.lua
@@ -295,7 +295,7 @@ mp.add_hook("on_load", 10, function ()
msg.debug("streamurl: " .. streamurl)
- mp.set_property("stream-open-filename", streamurl)
+ mp.set_property("stream-open-filename", streamurl:gsub("^data:", "data://", 1))
mp.set_property("file-local-options/force-media-title", json.title)
diff --git a/stream/stream_lavf.c b/stream/stream_lavf.c
index 7594175bd3..873043b38c 100644
--- a/stream/stream_lavf.c
+++ b/stream/stream_lavf.c
@@ -416,6 +416,7 @@ const stream_info_t stream_info_ffmpeg = {
.protocols = (const char *const[]){
"rtmp", "rtsp", "http", "https", "mms", "mmst", "mmsh", "mmshttp", "rtp",
"httpproxy", "hls", "rtmpe", "rtmps", "rtmpt", "rtmpte", "rtmpts", "srtp",
+ "data",
NULL },
.can_write = true,
.is_safe = true,