VideoHelp Forum





Try StreamFab Downloader and download streaming video from Netflix, Amazon!



+ Reply to Thread
Page 31 of 33
FirstFirst ... 21 29 30 31 32 33 LastLast
Results 901 to 930 of 985
  1. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    Originally Posted by kev043 View Post

    ❌ Download Failed...
    Output directory does not exist:
    C:\Users\Test\unshackle\Temp\Audio_1273372d.mp4_se gments
    An unexpected error occurred in one of the download workers.
    See the error trace above for more information.[/code]
    try change dowloader in unshackle.yaml

    Image
    [Attachment 92112 - Click to enlarge]
    or requests
    Quote Quote  
  2. I have been testing out TVNZ service quite a bit today and I was able to get the first season of LOR: Rings of Power and all is fine except episodes 8 which to me has the audio with the background noise being very clearly heard but when it comes to the characters in the episode speaking that isn't audible. I checked the first seven episode of season one and that problem isn't there. Maybe I will try to download it again. How can I select just the stereo sound option if the default option doesn't work correctly? Thank you in advance. Maybe since the video is fine I could demux and replace the audio with stereo sound.

    uv run unshackle dl --list -w S1E8 TVNZ https://www.tvnz.co.nz/tvseries/the-lord-of-the-rings-the-rings-of-power

    uv run unshackle dl -q 720 -w S01E08 TVNZ https://www.tvnz.co.nz/tvseries/the-lord-of-the-rings-the-rings-of-power
    Quote Quote  
  3. Member
    Join Date
    Feb 2026
    Location
    Mιxico, Estado de Mιxico, Tezoyuca.
    Search Comp PM
    Hi everyone, has anyone been able to download with SPOT? In my case, I get the following error:

    I:\unshackle-4.0.0>uv run unshackle dl SPOT "https://open.spotify.com/track/1WBOafEFY6UETRWMA1CyqC?si=d0ee7c6fd9084a2a"

    ▄• ▄▌ ▐ ▄ .▄▄ · ▄ .▄ ▄▄▄· ▄▄· ▄ •▄ ▄▄▌ ▄▄▄ .
    █▪██▌•█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██• ▀▄.▀·
    █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪ ▐▀▀▪▄
    ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
    ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀ ▀ ·▀▀▀ ·▀ ▀.▀▀▀ ▀▀▀
    v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle

    Service Config loaded
    Loaded 1/1 Vaults
    Loaded Widevine CDM: 8159 (L3)

    ────────────────────────────── Service: SPOT ───────────────────────────────

    Service has no Geofence
    ╭───────────────────── Traceback (most recent call last) ──────────────────────╮
    │ in _run_module_as_main:198 │
    │ in _run_code:88 │
    │ │
    │ in <module>:10 │
    │ │
    │ I:\unshackle-4.0.0\.venv\Lib\site-packages\click\core.py:1485 in __call__ │
    │ │
    │ I:\unshackle-4.0.0\.venv\Lib\site-packages\click\core.py:1406 in main │
    │ │
    │ I:\unshackle-4.0.0\.venv\Lib\site-packages\click\core.py:1873 in invoke │
    │ │
    │ I:\unshackle-4.0.0\.venv\Lib\site-packages\click\core.py:1873 in invoke │
    │ │
    │ I:\unshackle-4.0.0\.venv\Lib\site-packages\click\core.py:1842 in │
    │ _process_result │
    │ │
    │ I:\unshackle-4.0.0\.venv\Lib\site-packages\click\core.py:824 in invoke │
    │ │
    │ I:\unshackle-4.0.0\unshackle\commands\dl.py:1052 in result │
    │ │
    │ 1049 │ │ │ try: │
    │ 1050 │ │ │ │ cookies = self.get_cookie_jar(self.service, self.prof │
    │ 1051 │ │ │ │ credential = self.get_credentials(self.service, self. │
    │ ❱ 1052 │ │ │ │ service.authenticate(cookies, credential) │
    │ 1053 │ │ │ │ if cookies or credential: │
    │ 1054 │ │ │ │ │ self.log.info("Authenticated with Service") │
    │ 1055 │ │ │ │ │ if self.debug_logger: │
    │ │
    │ I:\unshackle-4.0.0\unshackle\services\SPOT\__init__.py:71 in authenticate │
    │ │
    │ 68 │ │ ) │
    │ 69 │ │ self.session.cookies.update(cookies) │
    │ 70 │ │ home_page = self.session.get("https://open.spotify.com/").cont │
    │ ❱ 71 │ │ token = re.search(r'accessToken":"(.*?)"', home_page).group(1) │
    │ 72 │ │ self.is_premium = re.search(r'isPremium".*?),', home_page).g │
    │ 73 │ │ self.session.headers.update( │
    │ 74 │ │ │ { │
    │ │
    │ C:\Users\Edgar │
    │ Lσpez\AppData\Roaming\uv\python\cpython-3.12-windows-x86_64-none\Lib\re\__in │
    │ it__.py:177 in search │
    │ │
    │ 174 def search(pattern, string, flags=0): │
    │ 175 │ """Scan through string looking for a match to the pattern, returni │
    │ 176 │ a Match object, or None if no match was found.""" │
    │ ❱ 177 │ return _compile(pattern, flags).search(string) │
    │ 178 │
    │ 179 def sub(pattern, repl, string, count=0, flags=0): │
    │ 180 │ """Return the string obtained by replacing the leftmost │
    ╰──────────────────────────────────────────── ───── ─────────────────────────────╯
    TypeError: cannot use a string pattern on a bytes-like object

    If anyone could help me with this error, I would be very grateful. A hug from Mιxico.
    Quote Quote  
  4. That isn't one of the free services that we discuss. Perhaps someone will send you a personal message to help with this issue. As for myself I have no idea how to address this issue but I am sure someone can help you if they chose to.
    Quote Quote  
  5. Member
    Join Date
    Oct 2023
    Location
    Afghanistan
    Search PM
    Originally Posted by stabbedbybrick View Post
    TVNZ, SBS, and ITV have been updated.
    @stabbedbybrick are you ok with me following your authentication logic to update Ozivine ?

    I've got a working TVNZ script now but wanted to check with you first before I do anything with it. Thanks mate
    Quote Quote  
  6. Originally Posted by billybanana View Post
    Originally Posted by stabbedbybrick View Post
    TVNZ, SBS, and ITV have been updated.
    @stabbedbybrick are you ok with me following your authentication logic to update Ozivine ?

    I've got a working TVNZ script now but wanted to check with you first before I do anything with it. Thanks mate
    Yes, of course. I appreciate the gesture, but my code is open to anyone to do whatever they want with it and there's no need to ask for permission
    Quote Quote  
  7. Code:
           
        Service Config loaded                                                      
         Loaded 1/1 Vaults                                                          
         Loaded Widevine CDM: 4445 (L3)                                             
         Loaded Basic: 4 Countries (4 Servers)                                      
                                                                                    
      ─────────────────────────── Service: PARAMOUNTP ────────────────────────────  
                                                                                    
         Service is Geoblocked in your region, getting a Proxy to US                
         Got Proxy from Basic                                                                  
     /Users/iam/Downloads/unshackle/.venv/bin/unshackle:10 in <module>         │
    │                                                                              │
    │    7 │   │   sys.argv[0] = sys.argv[0][:-11]                                 │
    │    8 │   elif sys.argv[0].endswith(".exe"):                                  │
    │    9 │   │   sys.argv[0] = sys.argv[0][:-4]                                  │
    │ ❱ 10 │   sys.exit(main())                                                    │
    │   11                                                                         │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/.venv/lib/python3.12/site-packages/click/c │
    │ ore.py:1485 in __call__                                                      │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/.venv/lib/python3.12/site-packages/click/c │
    │ ore.py:1406 in main                                                          │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/.venv/lib/python3.12/site-packages/click/c │
    │ ore.py:1873 in invoke                                                        │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/.venv/lib/python3.12/site-packages/click/c │
    │ ore.py:1873 in invoke                                                        │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/.venv/lib/python3.12/site-packages/click/c │
    │ ore.py:1842 in _process_result                                               │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/.venv/lib/python3.12/site-packages/click/c │
    │ ore.py:824 in invoke                                                         │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/unshackle/commands/dl.py:1064 in result    │
    │                                                                              │
    │   1061 │   │   │   try:                                                      │
    │   1062 │   │   │   │   cookies = self.get_cookie_jar(self.service, self.prof │
    │   1063 │   │   │   │   credential = self.get_credentials(self.service, self. │
    │ ❱ 1064 │   │   │   │   service.authenticate(cookies, credential)             │
    │   1065 │   │   │   │   if cookies or credential:                             │
    │   1066 │   │   │   │   │   self.log.info("Authenticated with Service")       │
    │   1067 │   │   │   │   │   if self.debug_logger:                             │
    │                                                                              │
    │ /Users/iam/Downloads/unshackle/unshackle/services/PARAMOUNTP/__init__.py: │
    │ 87 in authenticate                                                           │
    │                                                                              │
    │    84 │   │   │   raise EnvironmentError("Service requires Cookies for Authe │
    │    85 │   │                                                                  │
    │    86 │   │   jwt_token = next((cookie.value for cookie in cookies if cookie │
    │ ❱  87 │   │   payload = json.loads(base64.urlsafe_b64decode(jwt_token.split( │
    │    88 │   │   profile_id = payload.get("profileId", None)                    │
    │    89 │   │   self.session.headers.update({"user-agent": self.config["client │
    │    90
    AttributeError: 'NoneType' object has no attribute 'split'
    Last edited by lovedownload; 27th Apr 2026 at 06:37.
    Quote Quote  
  8. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    this service isnt come from here, ask someone who create it.
    Quote Quote  
  9. Originally Posted by iamghost View Post
    Originally Posted by kev043 View Post

    ❌ Download Failed...
    Output directory does not exist:
    C:\Users\Test\unshackle\Temp\Audio_1273372d.mp4_se gments
    An unexpected error occurred in one of the download workers.
    See the error trace above for more information.[/code]
    try change dowloader in unshackle.yaml

    Image
    [Attachment 92112 - Click to enlarge]
    or requests
    thanks for the info iamghost I tried this but I still get the error, it's weird but it was working okay before I reinstalled my pc, I'm using stabbys latest services, I have Shaka Packager v2.6.1, N_m3u8DL-RE_v0.5.1-beta_win-x64_20251029, CCExtractor: v0.93, MKVToolNix latest version, FFmpeg latest version and the enviroment paths set correctly.

    I can download series stuff fine off HMAX but it's sport I'm getting this error

    Code:
    (unshackle) C:\Users\Test\unshackle\.venv\Scripts>unshackle dl HMAX https://play.hbomax.com/video/watch-sport/a957424c-b2fd-5a61-b3a9-ec86d857c29b/3da8699a-3e4e-483a-8a60-477f11c2f5b2
    
                    ▄• ▄▌ ▐ ▄ .▄▄ ·  ▄ .▄ ▄▄▄·  ▄▄· ▄ •▄ ▄▄▌  ▄▄▄ .
                    █▪██▌•█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██•  ▀▄.▀·
                    █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪  ▐▀▀▪▄
                    ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
                     ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀  ▀ ·▀▀▀ ·▀  ▀.▀▀▀  ▀▀▀
               v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle
    
         Service Config loaded
         Loaded 1/1 Vaults
         Loaded PlayReady CDM: Qingdao Haier Optronics Co.,Ltd Haier TV Haier
         TV (L3000)
    
      ────────────────────────────── Service: HMAX ───────────────────────────────
    
         Service has no Geofence
          + Using cached Tokens...
         Authenticated with Service
    
      ───────────────── Series: John Higgins - Ronnie O'Sullivan ─────────────────
    
         1 seasons, S0(1)
    
      ─── John Higgins - Ronnie O'Sullivan S00E00 World Championship | Round 2 ───
    
         Cached 1 Key to 1/1 Vaults
         Cached 1 Key to 1/1 Vaults
    
         1 Video
         └── [H.264, SDR] | en | 1920x1080 @ 9429 kb/s, 50.000 FPS
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • 04:15 • Downloaded
         1 Audio
         └── [DD+] | en | 6.0 | 275 kb/s
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • 00:30 • Downloaded
    
         PlayReady(AAAC2HBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAri4AgAAAQABAK4C...)
         ├── 0100f3972195318ee65b0024b231fe36:a4294f2c42760780bfc7abdfc096d77f*
         └── 0105fe2e32e8889c5be3f7ea6a5d140f:a383e110d3b7142d8163778241ed94df*
    
         Track downloads finished in 4m15s
    ╭───────────────────── Traceback (most recent call last) ──────────────────────╮
    │ in _run_module_as_main:198                                                   │
    │ in _run_code:88                                                              │
    │                                                                              │
    │ in <module>:10                                                               │
    │                                                                              │
    │ C:\Users\Test\unshackle\.venv\Lib\site-packages\click\core.py:1485 in         │
    │ __call__                                                                     │
    │                                                                              │
    │ C:\Users\Test\unshackle\.venv\Lib\site-packages\click\core.py:1406 in main    │
    │                                                                              │
    │ C:\Users\Test\unshackle\.venv\Lib\site-packages\click\core.py:1873 in invoke  │
    │                                                                              │
    │ C:\Users\Test\unshackle\.venv\Lib\site-packages\click\core.py:1873 in invoke  │
    │                                                                              │
    │ C:\Users\Test\unshackle\.venv\Lib\site-packages\click\core.py:1842 in         │
    │ _process_result                                                              │
    │                                                                              │
    │ C:\Users\Test\unshackle\.venv\Lib\site-packages\click\core.py:824 in invoke   │
    │                                                                              │
    │ C:\Users\Test\unshackle\unshackle\commands\dl.py:2145 in result               │
    │                                                                              │
    │   2142 │   │   │   │   │   │   │   │   │   │   else title.language or video_ │
    │   2143 │   │   │   │   │   │   │   │   │   )                                 │
    │   2144 │   │   │   │   │   │   │   │   │   track_id = f"ccextractor-{video_t │
    │ ❱ 2145 │   │   │   │   │   │   │   │   │   cc = video_track.ccextractor(     │
    │   2146 │   │   │   │   │   │   │   │   │   │   track_id=track_id,            │
    │   2147 │   │   │   │   │   │   │   │   │   │   out_path=config.directories.t │
    │   2148 │   │   │   │   │   │   │   │   │   │   / config.filenames.subtitle.f │
    │                                                                              │
    │ C:\Users\Test\unshackle\unshackle\core\tracks\video.py:369 in ccextractor     │
    │                                                                              │
    │   366 │   │                                                                  │
    │   367 │   │   # Try on the original file first (preserves container-level CC │
    │   368 │   │   # then fall back to repacked file (ccextractor can fail on som │
    │ ❱ 369 │   │   if not _run_ccextractor():                                     │
    │   370 │   │   │   self.repackage()                                           │
    │   371 │   │   │   _run_ccextractor()                                         │
    │   372                                                                        │
    │                                                                              │
    │ C:\Users\Test\unshackle\unshackle\core\tracks\video.py:355 in                 │
    │ _run_ccextractor                                                             │
    │                                                                              │
    │   352 │   │                                                                  │
    │   353 │   │   def _run_ccextractor() -> bool:                                │
    │   354 │   │   │   try:                                                       │
    │ ❱ 355 │   │   │   │   subprocess.run(                                        │
    │   356 │   │   │   │   │   [binaries.CCExtractor, "-trim", "-nobom", "-noru", │
    │   357 │   │   │   │   │   check=True,                                        │
    │   358 │   │   │   │   │   stdout=subprocess.PIPE,                            │
    │                                                                              │
    │ C:\Users\Test\AppData\Roaming\uv\python\cpython-3.12-windows-x86_64-none\Lib\ │
    │ subprocess.py:571 in run                                                     │
    │                                                                              │
    │    568 │   │   │   raise                                                     │
    │    569 │   │   retcode = process.poll()                                      │
    │    570 │   │   if check and retcode:                                         │
    │ ❱  571 │   │   │   raise CalledProcessError(retcode, process.args,           │
    │    572 │   │   │   │   │   │   │   │   │    output=stdout, stderr=stderr)    │
    │    573 │   return CompletedProcess(process.args, retcode, stdout, stderr)    │
    │    574                                                                       │
    ╰──────────────────────────────────────────────────────────────────────────────╯
    CalledProcessError: Command
    '[WindowsPath('C:/WINDOWS/system32/ccextractor.EXE'), '-trim', '-nobom',
    '-noru', '-ru1', '-o',
    WindowsPath('C:/Users/Test/unshackle/Temp/Subtitle_ccextractor-68997335-0_en.srt'
    ), WindowsPath('C:/Users/Test/unshackle/Temp/Video_68997335.mp4')]' returned
    non-zero exit status 1000.
    
    (unshackle) C:\Users\Test\unshackle\.venv\Scripts>
    Quote Quote  
  10. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    all I can see, problem is ccextactor, It need replace

    https://files.videohelp.com/u/301156/CCExtractor.zip

    you can see other post have problem with ccextractor
    https://forum.videohelp.com/threads/418705-Unshackle-Modular-Movie-TV-and-Music-Archiv...26#post2793358
    Last edited by iamghost; 27th Apr 2026 at 07:28.
    Quote Quote  
  11. Originally Posted by iamghost View Post
    Thanks for the help iamghost, I replaced the CCExtractor with your zip and still got the same error, I just removed all my binaries and replaced them with your binaries zip and now when I try to download I get this error.

    Code:
    (unshackle) C:\Users\Kev\unshackle\.venv\Scripts>unshackle dl HMAX https://play.hbomax.com/video/watch-sport/a957424c-b2fd-5a61-b3a9-ec86d857c29b/3da8699a-3e4e-483a-8a60-477f11c2f5b2
    
                    ▄• ▄▌ ▐ ▄ .▄▄ ·  ▄ .▄ ▄▄▄·  ▄▄· ▄ •▄ ▄▄▌  ▄▄▄ .
                    █▪██▌•█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██•  ▀▄.▀·
                    █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪  ▐▀▀▪▄
                    ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
                     ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀  ▀ ·▀▀▀ ·▀  ▀.▀▀▀  ▀▀▀
               v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle
    
         Service Config loaded
         Loaded 1/1 Vaults
         Loaded PlayReady CDM: Qingdao Haier Optronics Co.,Ltd Haier TV Haier
         TV (L3000)
    
      ────────────────────────────── Service: HMAX ───────────────────────────────
    
         Service has no Geofence
          + Using cached Tokens...
         Authenticated with Service
    
      ───────────────── Series: John Higgins - Ronnie O'Sullivan ─────────────────
    
         1 seasons, S0(1)
    
      ─── John Higgins - Ronnie O'Sullivan S00E00 World Championship | Round 2 ───
    
    
         1 Video
         └── [H.264, SDR] | en | 1920x1080 @ 9429 kb/s, 50.000 FPS
             ⠧ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • Parsing streams...
         1 Audio
         └── [DD+] | en | 6.0 | 275 kb/s
             ⠧ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • Parsing streams...
    
         PlayReady(AAAC2HBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAri4AgAAAQABAK4C...)
         ├── 0100f3972195318ee65b0024b231fe36:a4294f2c42760780bfc7abdfc096d77f*
         │   from Local SQLite
         └── 0105fe2e32e8889c5be3f7ea6a5d140f:a383e110d3b7142d8163778241ed94df*
             from Local SQLite
    
    
         ❌ Download Failed...
            Output directory does not exist:
         C:\Users\Kev\unshackle\Temp\Video_68997335.mp4_segments
            An unexpected error occurred in one of the download workers.
            See the error trace above for more information.
    Quote Quote  
  12. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    well I dont have that service, it not from here.
    go back and add -ns in cmd it will download without subtitles
    Quote Quote  
  13. Thanks for the help iamghost, I have just got it working, I used your CCExtractor.zip what version of CCExtractor is that? but at the moment I just downloaded the video with no subs as you said, I never use subs so that's fine. The HMAX service is stabbys latest DSCP but modified as it says in the service to make it work for HMAX.

    I really appreciate the Help iamghost thank you.
    Quote Quote  
  14. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    Code:
    CCExtractor detailed version info
            Version: 0.94
            Git commit: 97b381a2b0bee35d3b22411772329eb540ee511b
            Compilation date: 2021-12-15
            CEA-708 decoder: Rust
            File SHA256: ff622c2997d8bd515e69a713da7b643cd2bd7fe5b8672153d9619a38026850d7
    Libraries used by CCExtractor
            Tesseract Version: 4.00.00alpha
            Leptonica Version: leptonica-1.74 (Dec 31 2016, 10:56:23) [MSC v.1900 LIB Release x86]
            libGPAC Version: 1.0.1
            zlib: 1.2.11
            utf8proc Version: 2.4.0
            protobuf-c Version: 1.3.1
            libpng Version: 1.6.37
            FreeType
            libhash
            nuklear
            libzvbi
    Quote Quote  
  15. I updated my TwinVine yesterday and now I can't abort downloads by pressing CTRL+C in Windows.
    Quote Quote  
  16. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by kalehrl View Post
    I updated my TwinVine yesterday and now I can't abort downloads by pressing CTRL+C in Windows.
    No changes have been made to any TwinVine code that could effect the interception of CTRL-C.
    Noob Starter Pack. Just download any Widevine media! Over 25,000 downloads for V6!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  17. PS C:\unshackle> uv run unshackle dl aubc https://iview.abc.net.au/video/LE2527H001S00
    ERROR: No 'output_template' configured in your unshackle.yaml.
    Please add an 'output_template' section with movies, series, and songs templates.
    See unshackle-example.yaml for examples.
    PS C:\unshackle> uv run unshackle dl aubc https://iview.abc.net.au/show/gruen
    ERROR: No 'output_template' configured in your unshackle.yaml.
    Please add an 'output_template' section with movies, series, and songs templates.
    See unshackle-example.yaml for examples.

    i just updated to 4.0 and am now getting this. I must be blind, i cant find the example.

    Cheers
    Quote Quote  
  18. Member
    Join Date
    Feb 2022
    Location
    Search the forum first!
    Search PM
    Originally Posted by plasticpillow View Post

    I must be blind, i cant find the example.

    Cheers
    Yes! https://forum.videohelp.com/threads/418705-Unshackle-Modular-Movie-TV-and-Music-Archiv...29#post2795836
    Noob Starter Pack. Just download any Widevine media! Over 25,000 downloads for V6!.
    https://files.videohelp.com/u/301890/hellyes6.zip
    Quote Quote  
  19. Crave and Kanopy services have been added.

    Make sure to only use Crave with a free account
    Quote Quote  
  20. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    stabbedbybrick thank you for add new services
    Quote Quote  
  21. Originally Posted by A_n_g_e_l_a View Post
    Originally Posted by plasticpillow View Post

    I must be blind, i cant find the example.

    Cheers
    Yes! https://forum.videohelp.com/threads/418705-Unshackle-Modular-Movie-TV-and-Music-Archiv...29#post2795836
    My hero!!
    Quote Quote  
  22. Since I updated it, I can't download anything:
    Code:
    Traceback (most recent call last):
      File "<frozen runpy>", line 198, in _run_module_as_main
      File "<frozen runpy>", line 88, in _run_code
      File "D:\Programs\TwinVine\.venv\Scripts\envied.exe\__main__.py", line 4, in <module>
        main()
    ^^^^^^^^^^^
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\__main__.py", line 14, in <module>
        from envied.core.commands import Commands
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\commands.py", line 12, in <module>
        _MODULES = {path.stem: getattr(import_module_by_path(path), path.stem) for path in _COMMANDS}
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\commands.py", line 12, in <dictcomp>
        _MODULES = {path.stem: getattr(import_module_by_path(path), path.stem) for path in _COMMANDS}
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\utilities.py", line 113, in import_module_by_path
        spec.loader.exec_module(module)
      File "D:\Programs\TwinVine\packages\envied\src\envied\commands\dl.py", line 47, in <module>
        from envied.core.cdm import CustomRemoteCDM, DecryptLabsRemoteCDM
      File "<frozen importlib._bootstrap>", line 1229, in _handle_fromlist
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\cdm\__init__.py", line 32, in __getattr__
        from .custom_remote_cdm import CustomRemoteCDM
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\cdm\custom_remote_cdm.py", line 14, in <module>
        from envied.core.vaults import Vaults
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\vaults.py", line 12, in <module>
        _MODULES = {path.stem: getattr(import_module_by_path(path), path.stem) for path in _VAULTS}
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\vaults.py", line 12, in <dictcomp>
        _MODULES = {path.stem: getattr(import_module_by_path(path), path.stem) for path in _VAULTS}
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\utilities.py", line 113, in import_module_by_path
        spec.loader.exec_module(module)
      File "D:\Programs\TwinVine\vaults\MySQL.py", line 8, in <module>
        from envied.core.services import Services
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\services.py", line 18, in <module>
        _MODULES = {path.parent.stem: getattr(import_module_by_path(path), path.parent.stem) for path in _SERVICES}
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\services.py", line 18, in <dictcomp>
        _MODULES = {path.parent.stem: getattr(import_module_by_path(path), path.parent.stem) for path in _SERVICES}
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "D:\Programs\TwinVine\packages\envied\src\envied\core\utilities.py", line 113, in import_module_by_path
        spec.loader.exec_module(module)
      File "D:\Programs\TwinVine\packages\envied\src\envied\services\KNPY\__init__.py", line 140
        id_=f"/video/{result.get("videoId")}",
                                  ^^^^^^^
    SyntaxError: f-string: unmatched '('
    EDIT: I "fixed" it by deleting KNPY folder.
    Last edited by kalehrl; 1st May 2026 at 06:47.
    Quote Quote  
  23. Member
    Join Date
    Dec 2022
    Location
    Lesotho
    Search Comp PM
    @stabbedbybrick
    Thank you!
    Quote Quote  
  24. Originally Posted by stabbedbybrick View Post
    Crave and Kanopy services have been added.

    Make sure to only use Crave with a free account
    I am tempted to stray off course. Thank you for adding Crave and Kanopy.
    Quote Quote  
  25. You're very welcome! I was pretty surprised by how not-terrible Kanopy was. Both in terms of selection and quality, it's better than some premium services.
    Quote Quote  
  26. I can get CRAV to successful load a list of titles and also to show quality available for a title but beyond that is is failing for me.

    Code:
    C:\Unshackle>uv run unshackle dl -q 540 -w S01E01 CRAV https://www.crave.ca/en/series/reba-56028
    
                    ▄• ▄▌ ▐ ▄ .▄▄ ·  ▄ .▄ ▄▄▄·  ▄▄· ▄ •▄ ▄▄▌  ▄▄▄ .
                    █▪██▌•█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██•  ▀▄.▀·
                    █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪  ▐▀▀▪▄
                    ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
                     ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀  ▀ ·▀▀▀ ·▀  ▀.▀▀▀  ▀▀▀
               v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle
    
         Service Config loaded
         Loaded 1/1 Vaults
         Loaded Widevine CDM: 4464 (L3)
    
      ────────────────────────────── Service: CRAV ───────────────────────────────
    
         Service is not Geoblocked in your region
          + Using cached tokens...
          + Refreshing profile tokens...
         Authenticated with Service
    
      ─────────────────────────── Series: Reba (2001) ────────────────────────────
    
         6 seasons, S1(22), S2(24), S3(22), S4(22), S5(22), S6(13)
    
      ────────────────────────── Reba 2001 S01E01 Pilot ──────────────────────────
    
    
         1 Video
         └── [H.264, SDR] | en | 960x540 @ 1800 kb/s, 29.970 FPS
             ⠹ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         1 Audio
         └── [DD] | en | 6.0 | 384 kb/s | Original
             ⠹ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         3 Subtitles
         ├── [WVTT] | en | Original
         │   ⠙ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         ├── [WVTT] | en | Original (SDH)
         │   ⠙ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         └── [VTT] | en | Original (SDH)
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • 00:10 • SKIPPED
         3 Chapters
         ├── 00:00:00.000
         ├── 00:03:23.000 | Intro
         └── 00:03:34.000
         Widevine(AAAAU3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADMIARIQahFGRyjXr...)
         └── An exception occurred in the Service's license function: 'CRAV'
             object has no attribute 'license_url'
         Widevine(AAAAU3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADMIARIQS2IlOdCck...)
         └── An exception occurred in the Service's license function: 'CRAV'
             object has no attribute 'license_url'
    
    ╭───────────────────── Traceback (most recent call last) ──────────────────────╮
    │ C:\Unshackle\unshackle\commands\dl.py:1979 in result                         │
    │                                                                              │
    │   1976 │   │   │   │   │   │   │   │   for i, track in enumerate(title.track │
    │   1977 │   │   │   │   │   │   │   )                                         │
    │   1978 │   │   │   │   │   │   ):                                            │
    │ ❱ 1979 │   │   │   │   │   │   │   download.result()                         │
    │   1980 │   │   │                                                             │
    │   1981 │   │   │   except KeyboardInterrupt:                                 │
    │   1982 │   │   │   │   console.print(Padding(":x: Download Cancelled...", (0 │
    │                                                                              │
    │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │
    │ s\_base.py:449 in result                                                     │
    │                                                                              │
    │   446 │   │   │   │   if self._state in [CANCELLED, CANCELLED_AND_NOTIFIED]: │
    │   447 │   │   │   │   │   raise CancelledError()                             │
    │   448 │   │   │   │   elif self._state == FINISHED:                          │
    │ ❱ 449 │   │   │   │   │   return self.__get_result()                         │
    │   450 │   │   │   │                                                          │
    │   451 │   │   │   │   self._condition.wait(timeout)                          │
    │   452                                                                        │
    │                                                                              │
    │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │
    │ s\_base.py:401 in __get_result                                               │
    │                                                                              │
    │   398 │   def __get_result(self):                                            │
    │   399 │   │   if self._exception:                                            │
    │   400 │   │   │   try:                                                       │
    │ ❱ 401 │   │   │   │   raise self._exception                                  │
    │   402 │   │   │   finally:                                                   │
    │   403 │   │   │   │   # Break a reference cycle with the exception in self._ │
    │   404 │   │   │   │   self = None                                            │
    │                                                                              │
    │ C:\Users\sheld\AppData\Local\Programs\Python\Python312\Lib\concurrent\future │
    │ s\thread.py:58 in run                                                        │
    │                                                                              │
    │    55 │   │   │   return                                                     │
    │    56 │   │                                                                  │
    │    57 │   │   try:                                                           │
    │ ❱  58 │   │   │   result = self.fn(*self.args, **self.kwargs)                │
    │    59 │   │   except BaseException as exc:                                   │
    │    60 │   │   │   self.future.set_exception(exc)                             │
    │    61 │   │   │   # Break a reference cycle with the exception 'exc'         │
    │                                                                              │
    │ C:\Unshackle\unshackle\core\tracks\track.py:260 in download                  │
    │                                                                              │
    │   257 │   │   │   │   │   cdm=cdm,                                           │
    │   258 │   │   │   │   )                                                      │
    │   259 │   │   │   elif self.descriptor == self.Descriptor.DASH:              │
    │ ❱ 260 │   │   │   │   DASH.download_track(                                   │
    │   261 │   │   │   │   │   track=self,                                        │
    │   262 │   │   │   │   │   save_path=save_path,                               │
    │   263 │   │   │   │   │   save_dir=save_dir,                                 │
    │                                                                              │
    │ C:\Unshackle\unshackle\core\manifests\dash.py:517 in download_track          │
    │                                                                              │
    │   514 │   │   │   │   │   if not license_widevine:                           │
    │   515 │   │   │   │   │   │   raise ValueError("license_widevine func must b │
    │   516 │   │   │   │   │   progress(downloaded="LICENSING")                   │
    │ ❱ 517 │   │   │   │   │   license_widevine(drm, track_kid=track_kid)         │
    │   518 │   │   │   │   │   progress(downloaded="[yellow]LICENSED")            │
    │   519 │   │   │   │   except Exception:  # noqa                              │
    │   520 │   │   │   │   │   DOWNLOAD_CANCELLED.set()  # skip pending track dow │
    │                                                                              │
    │ C:\Unshackle\unshackle\commands\dl.py:2668 in prepare_drm                    │
    │                                                                              │
    │   2665 │   │   │   │   │   │   │   │   service=self.service,                 │
    │   2666 │   │   │   │   │   │   │   │   context={"track": str(track), "except │
    │   2667 │   │   │   │   │   │   │   )                                         │
    │ ❱ 2668 │   │   │   │   │   │   raise e                                       │
    │   2669 │   │   │   │   │                                                     │
    │   2670 │   │   │   │   │   if self.debug_logger:                             │
    │   2671 │   │   │   │   │   │   self.debug_logger.log(                        │
    │                                                                              │
    │ C:\Unshackle\unshackle\commands\dl.py:2652 in prepare_drm                    │
    │                                                                              │
    │   2649 │   │   │   │   │   │   if self.service == "NF":                      │
    │   2650 │   │   │   │   │   │   │   drm.get_NF_content_keys(cdm=self.cdm, lic │
    │   2651 │   │   │   │   │   │   else:                                         │
    │ ❱ 2652 │   │   │   │   │   │   │   drm.get_content_keys(cdm=self.cdm, licenc │
    │   2653 │   │   │   │   │   except Exception as e:                            │
    │   2654 │   │   │   │   │   │   if isinstance(e, (Widevine.Exceptions.EmptyLi │
    │   2655 │   │   │   │   │   │   │   msg = str(e)                              │
    │                                                                              │
    │ C:\Unshackle\unshackle\core\drm\widevine.py:180 in get_content_keys          │
    │                                                                              │
    │   177 │   │   │   session_id = cdm.open()                                    │
    │   178 │   │   │                                                              │
    │   179 │   │   │   try:                                                       │
    │ ❱ 180 │   │   │   │   cert = certificate(challenge=cdm.service_certificate_c │
    │   181 │   │   │   │   if cert and hasattr(cdm, "set_service_certificate"):   │
    │   182 │   │   │   │   │   cdm.set_service_certificate(session_id, cert)      │
    │   183                                                                        │
    │                                                                              │
    │ C:\Unshackle\unshackle\services\CRAV\__init__.py:279 in                      │
    │ get_widevine_service_certificate                                             │
    │                                                                              │
    │   276 │                                                                      │
    │   277 │   def get_widevine_service_certificate(self, challenge: bytes, **_:  │
    │   278 │   │   if self.drm_system == "widevine":                              │
    │ ❱ 279 │   │   │   return self.session.post(url=self.license_url, data=challe │
    │   280 │   │                                                                  │
    │   281 │   │   return None                                                    │
    │   282                                                                        │
    ╰──────────────────────────────────────────────────────────────────────────────╯
    AttributeError: 'CRAV' object has no attribute 'license_url'
    
         ❌ Download Failed...
    Quote Quote  
  27. Member
    Join Date
    Dec 2021
    Location
    england
    Search Comp PM
    Originally Posted by Tom Saurus View Post
    I can get CRAV to successful load a list of titles and also to show quality available for a title but beyond that is is failing for me.

    Code:
    C:\Unshackle>uv run unshackle dl -q 540 -w S01E01 CRAV https://www.crave.ca/en/series/reba-56028
    
                    ▄• ▄▌ ▐ ▄ .▄▄ ·  ▄ .▄ ▄▄▄·  ▄▄· ▄ •▄ ▄▄▌  ▄▄▄ .
                    █▪██▌•█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██•  ▀▄.▀·
                    █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪  ▐▀▀▪▄
                    ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
                     ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀  ▀ ·▀▀▀ ·▀  ▀.▀▀▀  ▀▀▀
               v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle
    
         Service Config loaded
         Loaded 1/1 Vaults
         Loaded Widevine CDM: 4464 (L3)
    
      ────────────────────────────── Service: CRAV ───────────────────────────────
    
         Service is not Geoblocked in your region
          + Using cached tokens...
          + Refreshing profile tokens...
         Authenticated with Service
    
      ─────────────────────────── Series: Reba (2001) ────────────────────────────
    
         6 seasons, S1(22), S2(24), S3(22), S4(22), S5(22), S6(13)
    
      ────────────────────────── Reba 2001 S01E01 Pilot ──────────────────────────
    
    
         1 Video
         └── [H.264, SDR] | en | 960x540 @ 1800 kb/s, 29.970 FPS
             ⠹ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         1 Audio
         └── [DD] | en | 6.0 | 384 kb/s | Original
             ⠹ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         3 Subtitles
         ├── [WVTT] | en | Original
         │   ⠙ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         ├── [WVTT] | en | Original (SDH)
         │   ⠙ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         └── [VTT] | en | Original (SDH)
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • 00:10 • SKIPPED
         3 Chapters
         ├── 00:00:00.000
         ├── 00:03:23.000 | Intro
         └── 00:03:34.000
         Widevine(AAAAU3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADMIARIQahFGRyjXr...)
         └── An exception occurred in the Service's license function: 'CRAV'
             object has no attribute 'license_url'
         Widevine(AAAAU3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADMIARIQS2IlOdCck...)
         └── An exception occurred in the Service's license function: 'CRAV'
             object has no attribute 'license_url'
    
         ❌ Download Failed...
    change playready cdm will work
    Image
    [Attachment 92151 - Click to enlarge]
    Quote Quote  
  28. Originally Posted by iamghost View Post
    Originally Posted by Tom Saurus View Post
    I can get CRAV to successful load a list of titles and also to show quality available for a title but beyond that is is failing for me.

    Code:
    C:\Unshackle>uv run unshackle dl -q 540 -w S01E01 CRAV https://www.crave.ca/en/series/reba-56028
    
                    ▄• ▄▌ ▐ ▄ .▄▄ ·  ▄ .▄ ▄▄▄·  ▄▄· ▄ •▄ ▄▄▌  ▄▄▄ .
                    █▪██▌•█▌▐█▐█ ▀. ██▪▐█▐█ ▀█ ▐█ ▌▪█▌▄▌▪██•  ▀▄.▀·
                    █▌▐█▌▐█▐▐▌▄▀▀▀█▄██▀▐█▄█▀▀█ ██ ▄▄▐▀▀▄·██▪  ▐▀▀▪▄
                    ▐█▄█▌██▐█▌▐█▄▪▐███▌▐▀▐█ ▪▐▌▐███▌▐█.█▌▐█▌▐▌▐█▄▄▌
                     ▀▀▀ ▀▀ █▪ ▀▀▀▀ ▀▀▀ · ▀  ▀ ·▀▀▀ ·▀  ▀.▀▀▀  ▀▀▀
               v 4.0.0 - © 2025-2026 - github.com/unshackle-dl/unshackle
    
         Service Config loaded
         Loaded 1/1 Vaults
         Loaded Widevine CDM: 4464 (L3)
    
      ────────────────────────────── Service: CRAV ───────────────────────────────
    
         Service is not Geoblocked in your region
          + Using cached tokens...
          + Refreshing profile tokens...
         Authenticated with Service
    
      ─────────────────────────── Series: Reba (2001) ────────────────────────────
    
         6 seasons, S1(22), S2(24), S3(22), S4(22), S5(22), S6(13)
    
      ────────────────────────── Reba 2001 S01E01 Pilot ──────────────────────────
    
    
         1 Video
         └── [H.264, SDR] | en | 960x540 @ 1800 kb/s, 29.970 FPS
             ⠹ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         1 Audio
         └── [DD] | en | 6.0 | 384 kb/s | Original
             ⠹ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         3 Subtitles
         ├── [WVTT] | en | Original
         │   ⠙ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         ├── [WVTT] | en | Original (SDH)
         │   ⠙ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • --:-- • FAILED
         └── [VTT] | en | Original (SDH)
              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • 00:10 • SKIPPED
         3 Chapters
         ├── 00:00:00.000
         ├── 00:03:23.000 | Intro
         └── 00:03:34.000
         Widevine(AAAAU3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADMIARIQahFGRyjXr...)
         └── An exception occurred in the Service's license function: 'CRAV'
             object has no attribute 'license_url'
         Widevine(AAAAU3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADMIARIQS2IlOdCck...)
         └── An exception occurred in the Service's license function: 'CRAV'
             object has no attribute 'license_url'
    
         ❌ Download Failed...
    change playready cdm will work
    Image
    [Attachment 92151 - Click to enlarge]
    I will have to find myself a playready cdm and then learn how to change CRAV to accept it. My Twinvine has a python playready something. It is good it is working for you and thanks for the information.

    I think I better take a break. I am getting confused trying to figure it out.
    Last edited by Tom Saurus; 1st May 2026 at 19:11.
    Quote Quote  
  29. Member
    Join Date
    Oct 2023
    Location
    Afghanistan
    Search PM
    Originally Posted by stabbedbybrick View Post
    Crave and Kanopy services have been added.
    Nice one stabby.
    Quote Quote  
  30. Originally Posted by Tom Saurus View Post
    I can get CRAV to successful load a list of titles and also to show quality available for a title but beyond that is is failing for me.

    Code:
    AttributeError: 'CRAV' object has no attribute 'license_url'
    That was actually an error on my part and has been fixed in the latest update. Widevine L3 will only work up to 720p, though, so keep that in mind.

    Edit: Actually, it looks like some titles can license 1080p L3. Either way, I'd recommend using playready for anything higher quality.
    Last edited by stabbedbybrick; 1st May 2026 at 23:31.
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!