-
-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
jiocinema - audio missing on some episodes #10144
Comments
At the time I wrote the extractor code, all of the DASH formats were DRM-protected. |
Ah, I see. That makes sense. I picked a movie from the homepage at random, and it seems to be the same case here: The movie loads without DRM, although I see the warning on Firefox asking me to enable it. When using yt-dlp, it shows no streams:
I see you've added the account-needed and can-share-account tags, so let me know the process. I can share my account or help with code if it's a straightforward change (though I haven't worked with DASH or yt-dl before). |
Can you show the full verbose log? The extractor should be detecting this and raising as DRM protected |
Yeah, here you go...
I added a log line to the DRM check:
It's finding this m3u8 stream:
|
Hmm actually there are formats available, but the manifest just doesn't give resolutions for its variants, so our filter removes them |
I think this would work for the no-formats issue: diff --git a/yt_dlp/extractor/jiocinema.py b/yt_dlp/extractor/jiocinema.py
index e7186d75c..b52987f5d 100644
--- a/yt_dlp/extractor/jiocinema.py
+++ b/yt_dlp/extractor/jiocinema.py
@@ -242,9 +242,11 @@ def _extract_formats_and_subtitles(self, playback, video_id):
self._remove_duplicate_formats(formats)
return {
- # '/_definst_/smil:vod/' m3u8 manifests claim to have 720p+ formats but max out at 480p
+ # '/_definst_/smil:vod/' m3u8 manifests need special handling:
+ # - they claim to have 720p+ formats but max out at 480p
+ # - some don't provide resolution info for their variants
'formats': traverse_obj(formats, (
- lambda _, v: '/_definst_/smil:vod/' not in v['url'] or v['height'] <= 480)),
+ lambda _, v: '/_definst_/smil:vod/' not in v['url'] or not v.get('height') or v['height'] <= 480)),
'subtitles': subtitles,
}
|
Yep, that did the trick!
Do you need me to create a different issue for this? Or is it okay if I clump it with the original issue? |
No need, I'll just open a PR in a bit. Thanks for testing the patch |
On that note, I want to add something odd I've noticed...
All of the above download the same video, and I can see the same potato video quality in my browser as well. media info |
Figures. Have to fine-tune the filter a bit more then |
DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
Checklist
Region
India
Provide a description that is worded well enough to be understood
I tried to look into this but I'm not sure what's missing. One thing I've noticed that in the browser itself, the app uses DASH but we use HLS in yt-dlp. I've disabled DRM in the browser as well so I know it isn't using a DRM.
There are some episodes, for example: https://www.jiocinema.com/tv-shows/pokemon/3/the-fortune-hunters/3776882 which support multiple audio sources (English + Hindi in this case). However, listing formats does not list Hindi as an audio source:
When viewing the above episode in the browser, I can see a request to the following URL (note
_hin
in the URL, for Hindi):There are other episodes from the same series which support A/V video sources (as opposed to video only)[see: example 2], and some which support video only + have multiple languages supported.
Example 2 (https://www.jiocinema.com/tv-shows/pokemon/4/a-goldenrod-opportunity/3776579):
Provide verbose output that clearly demonstrates the problem
yt-dlp -vU <your command line>
)'verbose': True
toYoutubeDL
params instead[debug] Command-line config
) and insert it belowComplete Verbose Output
The text was updated successfully, but these errors were encountered: