I watched those 2 videos & tried to follow what he was doing. I used as my example the
Vimeo video I found in this thread the other day:
https://groups.google.com/g/video-downloadhelper-q-and-a/c/yRowBqZXoKQ
Back to the story. I opened the Network Monitor & filtered on
player.vimeo.com. I got 3
results listed in the Network Monitor so I just picked the first one. The file you get
when you save that entry is a json. When I looked inside it, I wasn't finding MP4 URLs
like he said. Json follows a particularly ugly format with no line breaks if you look at
it in Notepad, as he shows in his videos. Fortunately, I have Notepad++ which
automatically prettifies json. It helped a tiny bit. It organized some parts of the
content but there were still large chunks that were just run-on lines.
But I did notice there were several mentions of master.m3u8. Now that's something I can
deal with. I think I counted 14 URLs of master manifests in there. I just started with
the first URL & pumped each one I found through ffprobe. The first 2 got all manner of
errors from ffprobe, 404 not found mostly. But I hit paydirt with the third one. It
showed the usual array of Programs & Streams that you expect to see in an ffprobe report.
I settled on the 1920x1080 video (happened to be Stream 0:4). It was paired in the same
Program with an audio stream (Stream 0:1).
In addition, the ffprobe report showed the usual error message about not being able to
support the subtitles. My experience is that this is hogwash. Ffmpeg is easily able to
download subtitles. Captions. They're synonyms. The error message gave a partial URL
for a manifest for subtitles. I took the beginning part of the URL for the master
manifest & prepended it to the partial URL for the subtitles manifest in the ffprobe
report. I ran that through ffmpeg. Presto. I got a .vtt file of English subtitles.
Getting the video was more of a struggle. I was doing everything like I always do but
ffmpeg was telling me I was making a syntax error. For the life of me, I couldn't figure
out what I was doing wrong. I kept studying my input & I finally noticed that the URL of
the master manifest ended with a \ character. I went back to the raw json & double
checked that I had faithfully copied the URL. Sure enough, in the json, the URL ends
with \. The URL is surrounded by " " in the json & the \ is inside the quotation marks.
But we've seen enough URLs to know that the usual character for separating sections of a
URL is /, not \. So I took a wild-ass guess & removed the \ from the end of the URL for
the master manifest. Poof. Magic. No more complaints from ffmpeg. It downloaded the
15-minute video with audio.
Next step was to play the thing in VLC & see what the subtitles looked like. I am
guessing these subtitles were machine generated from the audio track. At least half of
them simply didn't match the dialog in the scene. There were also stretches when there
was dialog but there were no subtitles. I would call these subtitles far below standard,
extremely poor. In addition, the main character is constantly on his cell phone back to
his home country, which the text below the video says is Pakistan. During his phone
calls home, there are burned-in English subtitles displayed with other subtitles coming
from the vtt file overlaying them intermittently. It's quite a mess. Setting the
subtitle issues aside, the video did play perfectly beginning to end.
But this is all moot. As I demonstrated in that thread from the other day, this video
downloads fine with VDH. The only perhaps useful thing Vid Down Madness has added is a
way to discover captions & download them, even if they are garbage. Maybe there is
content on Vimeo for which the captions aren't garbage, but they were most assuredly
garbage for this video. There is a CC button in the Vimeo player for this particular
video that lets you turn English captions on. It also says there that they are machine
generated, confirming my suspicion I voiced above. VDH, as we all know, does not handle
captions. But using ffprobe on the master HLS manifest you can find (eventually) in the
json will reveal not simply the various resolutions of the video, with a couple of
qualities of audio, but you can also find captions. I will give Vid Down Madness the
benefit of the doubt that he found some videos that worked the way he described. But I
think there is no consistency on Vimeo, just as there is no consistency on YouTube, so
his technique is not a generally applicable one. You probably have to look at each json
as its own case & improvise what to do with it. Vimeo is owned by YouTube, isn't it? Or
is it just that both YouTube & Vimeo are owned by Google? In any case, it's sure a lot
of fun for those of us who have unlimited time to geek out with this stuff. But it seems
like every case needs its own hand-crafted solution. For people who don't have this sort
of time to burn, the situation is probably quite hopeless.