1
0
mirror of https://github.com/pixeltris/TwitchAdSolutions.git synced 2024-11-26 12:22:51 +01:00
Go to file
2020-12-29 01:06:48 +00:00
base Remove null propagation #5 2020-12-28 04:14:21 +00:00
dyn Remove null propagation #5 2020-12-28 04:14:21 +00:00
dyn-skip Remove null propagation #5 2020-12-28 04:14:21 +00:00
dyn-skip-midroll Remove null propagation #5 2020-12-28 04:14:21 +00:00
dyn-video-swap Remove null propagation #5 2020-12-28 04:14:21 +00:00
low-res Rename userscript files for easier install #2 2020-12-26 12:08:27 +00:00
mute-black Remove null propagation #5 2020-12-28 04:14:21 +00:00
proxy-m3u8 Remove null propagation #5 2020-12-28 04:14:21 +00:00
README.md Additional info about hosting a proxy server 2020-12-29 01:06:48 +00:00
utils.bat Add page for testing m3u8 modifications and latency 2020-12-28 06:22:10 +00:00
utils.cs Add page for testing m3u8 modifications and latency 2020-12-28 06:22:10 +00:00
utils.js Add page for testing m3u8 modifications and latency 2020-12-28 06:22:10 +00:00

TwitchAdSolutions

This repo aims to provide multiple solutions for blocking Twitch ads.

Current solutions

  • dyn-skip (ublock / userscript)
    • Notifies Twitch that ads were watched before requesting the main live stream.
    • May slightly slow down loading of streams.
    • Falls back to mute-black if this fails (use an alternative solution if it always fails for you, as it adds additional load).
    • Currently only handles pre-rolls (mid-roll ads should be muted/blacked out) (mid-rolls will require a player reload, which currently isn't implemented)
  • dyn-skip-midroll (ublock / userscript)
    • The same as dyn-skip, but also skips midroll ads (experimental/untested).
    • This requires the script to work perfectly, otherwise the player will hit a reload loop.
  • dyn-video-swap (ublock / userscript)
    • Ads are replaced by a low resolution stream for the duration of the ad.
    • Similar to dyn, but skips closer to 20 seconds when switching to the live stream.
    • You might see tiny bits of the ad.
    • Audio controls wont work whilst the ad is playing.
  • dyn (ublock / userscript)
    • Ad segments are replaced by low resolution stream segments (on a m3u8 level).
    • Skips 2-3 seconds when switching to the live stream.
    • Stuttering and looping of segments often occur (during the ad segments).
    • NOTE: Removing segments doesn't notify Twitch that ads were watched (aka more served ads).
  • low-res (ublock / userscript)
    • No ads.
    • The stream is 480p for the duration of the stream.
  • mute-black (ublock / userscript)
    • Ads are muted / blacked out for the duration of the ad.
    • You might see tiny bits of the ad.
  • proxy-m3u8 (ublock / userscript)
    • Uses a proxy server (set to one controlled by @ChoosenEye) to fetch an ad-free stream.
    • Currently only the initial m3u8 is proxied, so there shouldn't be any additional latency.
    • Assumes the proxy server acts in good faith and maintains a good uptime.
    • The current proxy owner doesn't like the url being used by this project, an alternative host would be ideal. (requires a web server hosted in a non-ad country, taking a channel name as the last url arg, and fetching the m3u8 - see #8).

Applying a solution (uBlock Origin)

uBlock Origin solutions are single files, suffixed by ublock-origin.js e.g. low-res-ublock-origin.js.

  • Navigate to the uBlock Origin Dashboard (the extension options)
  • Under the My filters tab add twitch.tv##+js(twitch-videoad).
  • Under the Settings tab, enable I am an advanced user, then click the cog that appears. Modify the value of userResourcesLocation from unset to the full url of the solution you wish to use (if a url is already in use, add a space after the existing url). e.g. userResourcesLocation https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/dyn/dyn-ublock-origin.js

Applying a solution (userscript)

Tampermonkey / Greasemonkey can be used on the files suffixed by user.js e.g. low-res.user.js

  • Viewing one of the userscript files should prompt the given script to be added

Other solutions / projects


NOTE/TODO

NOTE: Many of these solutions could do with improvements.
TODO: Test midroll ads.
TODO: More testing in general.