mpv version : v2:0.29.1+git2~trusty
platform : Ubuntu Linux
I have multiple ytdl-raw-options= lines in my mpv.conf but it seems mpv does not concatenate them, it only acknowledges the last one.
I have the ytdl-raw-options='abort-on-error=' in the default mpv options and I use ytdl-raw-options='sub-lang="en,eng,enUS,en-US,fr"' to only download the english and french subtitles in my [english] mpv profile.
But, as you can see in the following example, the first --ytdl-raw-options='sub-lang="en,eng,enUS,en-US,fr"' is ignored and ALL the 104 subtitles are downloaded (which takes quite some time) :
$ mpv --no-config --ytdl-raw-options='sub-lang="en,eng,enUS,en-US,fr"' --ytdl-raw-options='abort-on-error=' https://www.youtube.com/playlist?list=PLRv5TPGK6KtwWGOvqJJ_9t0c7_wwhxYB1
Playing: https://www.youtube.com/playlist?list=PLRv5TPGK6KtwWGOvqJJ_9t0c7_wwhxYB1
Playing: https://youtu.be/yO7NBfpaobY
(+) Video --vid=1 (*) (vp9 1280x720 29.970fps)
(+) Audio --aid=1 --alang=eng (*) 'DASH audio' (opus 2ch 48000Hz) (external)
Subs --sid=1 --slang=bn 'vtt' (webvtt) (external)
Subs --sid=2 --slang=jv 'vtt' (webvtt) (external)
Subs --sid=3 --slang=en 'vtt' (webvtt) (external)
Subs --sid=4 --slang=lv 'vtt' (webvtt) (external)
Subs --sid=5 --slang=ka 'vtt' (webvtt) (external)
Subs --sid=6 --slang=ar 'vtt' (webvtt) (external)
Subs --sid=7 --slang=be 'vtt' (webvtt) (external)
Subs --sid=8 --slang=ha 'vtt' (webvtt) (external)
Subs --sid=9 --slang=kn 'vtt' (webvtt) (external)
Subs --sid=10 --slang=mn 'vtt' (webvtt) (external)
Subs --sid=11 --slang=da 'vtt' (webvtt) (external)
Subs --sid=12 --slang=ca 'vtt' (webvtt) (external)
Subs --sid=13 --slang=az 'vtt' (webvtt) (external)
Subs --sid=14 --slang=sn 'vtt' (webvtt) (external)
Subs --sid=15 --slang=ur 'vtt' (webvtt) (external)
Subs --sid=16 --slang=sr 'vtt' (webvtt) (external)
Subs --sid=17 --slang=tr 'vtt' (webvtt) (external)
Subs --sid=18 --slang=mr 'vtt' (webvtt) (external)
Subs --sid=19 --slang=sv 'vtt' (webvtt) (external)
Subs --sid=20 --slang=am 'vtt' (webvtt) (external)
Subs --sid=21 --slang=fi 'vtt' (webvtt) (external)
Subs --sid=22 --slang=hu 'vtt' (webvtt) (external)
Subs --sid=23 --slang=ku 'vtt' (webvtt) (external)
Subs --sid=24 --slang=ky 'vtt' (webvtt) (external)
Subs --sid=25 --slang=ny 'vtt' (webvtt) (external)
Subs --sid=26 --slang=my 'vtt' (webvtt) (external)
Subs --sid=27 --slang=km 'vtt' (webvtt) (external)
Subs --sid=28 --slang=mi 'vtt' (webvtt) (external)
Subs --sid=29 --slang=hi 'vtt' (webvtt) (external)
Subs --sid=30 --slang=eu 'vtt' (webvtt) (external)
Subs --sid=31 --slang=si 'vtt' (webvtt) (external)
Subs --sid=32 --slang=sm 'vtt' (webvtt) (external)
Subs --sid=33 --slang=zu 'vtt' (webvtt) (external)
Subs --sid=34 --slang=af 'vtt' (webvtt) (external)
Subs --sid=35 --slang=hy 'vtt' (webvtt) (external)
Subs --sid=36 --slang=sq 'vtt' (webvtt) (external)
Subs --sid=37 --slang=su 'vtt' (webvtt) (external)
Subs --sid=38 --slang=ru 'vtt' (webvtt) (external)
Subs --sid=39 --slang=haw 'vtt' (webvtt) (external)
Subs --sid=40 --slang=yi 'vtt' (webvtt) (external)
Subs --sid=41 --slang=ht 'vtt' (webvtt) (external)
Subs --sid=42 --slang=it 'vtt' (webvtt) (external)
Subs --sid=43 --slang=la 'vtt' (webvtt) (external)
Subs --sid=44 --slang=xh 'vtt' (webvtt) (external)
Subs --sid=45 --slang=lt 'vtt' (webvtt) (external)
Subs --sid=46 --slang=gl 'vtt' (webvtt) (external)
Subs --sid=47 --slang=fy 'vtt' (webvtt) (external)
Subs --sid=48 --slang=el 'vtt' (webvtt) (external)
Subs --sid=49 --slang=fil 'vtt' (webvtt) (external)
Subs --sid=50 --slang=cy 'vtt' (webvtt) (external)
Subs --sid=51 --slang=vi 'vtt' (webvtt) (external)
Subs --sid=52 --slang=uz 'vtt' (webvtt) (external)
Subs --sid=53 --slang=nl 'vtt' (webvtt) (external)
Subs --sid=54 --slang=et 'vtt' (webvtt) (external)
Subs --sid=55 --slang=ga 'vtt' (webvtt) (external)
Subs --sid=56 --slang=ml 'vtt' (webvtt) (external)
Subs --sid=57 --slang=mg 'vtt' (webvtt) (external)
Subs --sid=58 --slang=sl 'vtt' (webvtt) (external)
Subs --sid=59 --slang=pl 'vtt' (webvtt) (external)
Subs --sid=60 --slang=th 'vtt' (webvtt) (external)
Subs --sid=61 --slang=ta 'vtt' (webvtt) (external)
Subs --sid=62 --slang=fr 'vtt' (webvtt) (external)
Subs --sid=63 --slang=zh-Hans 'vtt' (webvtt) (external)
Subs --sid=64 --slang=sw 'vtt' (webvtt) (external)
Subs --sid=65 --slang=pt 'vtt' (webvtt) (external)
Subs --sid=66 --slang=hmn 'vtt' (webvtt) (external)
Subs --sid=67 --slang=ne 'vtt' (webvtt) (external)
Subs --sid=68 --slang=sd 'vtt' (webvtt) (external)
Subs --sid=69 --slang=gd 'vtt' (webvtt) (external)
Subs --sid=70 --slang=so 'vtt' (webvtt) (external)
Subs --sid=71 --slang=lo 'vtt' (webvtt) (external)
Subs --sid=72 --slang=st 'vtt' (webvtt) (external)
Subs --sid=73 --slang=is 'vtt' (webvtt) (external)
Subs --sid=74 --slang=ko 'vtt' (webvtt) (external)
Subs --sid=75 --slang=ro 'vtt' (webvtt) (external)
Subs --sid=76 --slang=pa 'vtt' (webvtt) (external)
Subs --sid=77 --slang=bg 'vtt' (webvtt) (external)
Subs --sid=78 --slang=fa 'vtt' (webvtt) (external)
Subs --sid=79 --slang=zh-Hant 'vtt' (webvtt) (external)
Subs --sid=80 --slang=eo 'vtt' (webvtt) (external)
Subs --sid=81 --slang=kk 'vtt' (webvtt) (external)
Subs --sid=82 --slang=co 'vtt' (webvtt) (external)
Subs --sid=83 --slang=ps 'vtt' (webvtt) (external)
Subs --sid=84 --slang=gu 'vtt' (webvtt) (external)
Subs --sid=85 --slang=es 'vtt' (webvtt) (external)
Subs --sid=86 --slang=id 'vtt' (webvtt) (external)
Subs --sid=87 --slang=cs 'vtt' (webvtt) (external)
Subs --sid=88 --slang=bs 'vtt' (webvtt) (external)
Subs --sid=89 --slang=sk 'vtt' (webvtt) (external)
Subs --sid=90 --slang=ja 'vtt' (webvtt) (external)
Subs --sid=91 --slang=tg 'vtt' (webvtt) (external)
Subs --sid=92 --slang=yo 'vtt' (webvtt) (external)
Subs --sid=93 --slang=hr 'vtt' (webvtt) (external)
Subs --sid=94 --slang=de 'vtt' (webvtt) (external)
Subs --sid=95 --slang=uk 'vtt' (webvtt) (external)
Subs --sid=96 --slang=mt 'vtt' (webvtt) (external)
Subs --sid=97 --slang=ms 'vtt' (webvtt) (external)
Subs --sid=98 --slang=iw 'vtt' (webvtt) (external)
Subs --sid=99 --slang=ceb 'vtt' (webvtt) (external)
Subs --sid=100 --slang=te 'vtt' (webvtt) (external)
Subs --sid=101 --slang=mk 'vtt' (webvtt) (external)
Subs --sid=102 --slang=lb 'vtt' (webvtt) (external)
Subs --sid=103 --slang=no 'vtt' (webvtt) (external)
Subs --sid=104 --slang=ig 'vtt' (webvtt) (external)
AO: [pulse] 48000Hz stereo 2ch float
VO: [gpu] 1280x720 yuv420p
Fontconfig warning: ignoring C.UTF-8: not a valid language tag
AV: 00:00:03 / 01:58:01 (0%) A-V: 0.000 Dropped: 5 Cache: 45s+3MB
The ytdl-raw-options= calls (or lines in the mpv.conf) are concatenated.
The ytdl-raw-options= calls (or lines in the mpv.conf) are NOT concatenated and only the last ytdl-raw-options= is acknowledged.
Here is the mpv log : mpv_issue#6788.txt
Does any option in mpv at all concatenate? Because I don't think concatenation was ever intended.
EDIT: glsl-shader I suppose? But if ytdl-raw-options is going to concatenate there still should be a way to reset it to an empty list in a profile
Only "-append" options do so. And with those there exists a whole set of complementary operations to manipulate the list of options to be created.
Other options don't concatenate afaik and I'm not aware of this being normal behavior anywhere else.
@CounterPillow You're right, other options don't need concatenation.
I think this is the only one which does :
$ man mpv | egrep -- "^\s+--[^=]+options="
--ytdl-raw-options=<key>=<value>[,<key>=<value>[,...]]
because it has an s at the end of it's name (just kidding)
Anyway, I guess, maybe this a more of a new feature request than a real issue, do you agree ?
@Argon- Maybe, you can create these options :
--ytdl-raw-options-apend to append a new item to the list of --ytdl-raw-options--ytdl-raw-options-clr to reset it to an empty list just like CounterPillow suggestedytdl-raw-options is a key/value list option. --ytdl-raw-options-append is already a thing. It's not in the man page, but --list-options shows it. For whatever reason, key/value lists don't get -clr, though. (String lists do.)
@qmega What do you mean when you say
--ytdl-raw-options-appendis already a thing
?
I tried and run the following command but mpv says "_Error parsing option ytdl-raw-options-apend (option not found)_" :
$ mpv --no-config --ytdl-raw-options='sub-lang="en,eng,enUS,en-US,fr"' --ytdl-raw-options-apend='abort-on-error=' https://www.youtube.com/playlist?list=PLRv5TPGK6KtwWGOvqJJ_9t0c7_wwhxYB1
Error parsing option ytdl-raw-options-apend (option not found)
Setting commandline option --ytdl-raw-options-apend=abort-on-error= failed.
Exiting... (Fatal error)
$ echo $?
1
Well, that's because it should be append, instead of apend.
append
@zc62 Oh I see :)
Now, in my [english] profile in my mpv.conf, I have this :
profile=fsd,english
[english]
alang=en,fr
ytdl-raw-options='sub-lang="en,eng,enUS,en-US,fr"'
ytdl-raw-options-append='abort-on-error='
and it works perfectly :
$ mpv https://www.youtube.com/playlist?list=PLRv5TPGK6KtwWGOvqJJ_9t0c7_wwhxYB1
Playing: https://www.youtube.com/playlist?list=PLRv5TPGK6KtwWGOvqJJ_9t0c7_wwhxYB1
Playing: https://youtu.be/g2TyxiEnsfw
[ytdl_hook] ERROR: This video contains content from LakewoodChurch, who has blocked it on copyright grounds.
[ytdl_hook] youtube-dl failed: unexpected error ocurred
Failed to recognize file format.
Playing: https://youtu.be/yO7NBfpaobY
(+) Video --vid=1 (*) (h264 854x480 29.970fps)
(+) Audio --aid=1 --alang=eng (*) 'DASH audio' (opus 2ch 48000Hz) (external)
Subs --sid=1 --slang=en 'vtt' (webvtt) (external)
Subs --sid=2 --slang=fr 'vtt' (webvtt) (external)
AO: [pulse] 48000Hz stereo 2ch float
VO: [gpu] 854x480 yuv420p
Fontconfig warning: ignoring C.UTF-8: not a valid language tag
AV: 00:00:02 / 01:58:01 (0%) A-V: 0.000 Cache: 34s+1MB
Saving state.
But if I try this it does not work :
ytdl-raw-options='abort-on-error='
profile=fsd,english
[english]
alang=en,fr
ytdl-raw-options-append='sub-lang="en,eng,enUS,en-US,fr"'
I wonder why the subtitles are not loaded :
$ mpv https://www.youtube.com/playlist?list=PLRv5TPGK6KtwWGOvqJJ_9t0c7_wwhxYB1
Playing: https://www.youtube.com/playlist?list=PLRv5TPGK6KtwWGOvqJJ_9t0c7_wwhxYB1
Playing: https://youtu.be/g2TyxiEnsfw
[ytdl_hook] ERROR: This video contains content from LakewoodChurch, who has blocked it on copyright grounds.
[ytdl_hook] youtube-dl failed: unexpected error ocurred
Failed to recognize file format.
Playing: https://youtu.be/yO7NBfpaobY
(+) Video --vid=1 (*) (h264 854x480 29.970fps)
(+) Audio --aid=1 --alang=eng (*) 'DASH audio' (opus 2ch 48000Hz) (external)
AO: [pulse] 48000Hz stereo 2ch float
VO: [gpu] 854x480 yuv420p
Fontconfig warning: ignoring C.UTF-8: not a valid language tag
AV: 00:00:04 / 01:58:01 (0%) A-V: 0.000 Cache: 38s+2MB
Saving state.
But then if I change my config to :
ytdl-raw-options='abort-on-error='
profile=fsd,english
[english]
alang=en,fr
ytdl-raw-options-add='sub-lang="en,eng,enUS,en-US,fr"'
then it works back again.
Do you have any idea why ?
Run with --msg-level=ytdl_hook=debug. Look for a line with [ytdl_hook] Running: youtube-dl (...).
Check which options are working or not.
Works for me, both using -append and -add.
@wiiaboo My pb. seems to be solved by replacing ytdl-raw-options-append by ytdl-raw-options-add in my mpv.conf.
Now I have this and it works fine :
ytdl-raw-options='abort-on-error='
profile=fsd,english
[english]
alang=en,fr
ytdl-raw-options-add='sub-lang="en,eng,enUS,en-US,fr"'
Most helpful comment
@wiiaboo My pb. seems to be solved by replacing
ytdl-raw-options-appendbyytdl-raw-options-addin mympv.conf.Now I have this and it works fine :