Closed Gythion closed 2 years ago
Funny enough, i couldn't play any single video yesterday on my desktop machine with Kodi and alpha2, but everything played no problem on Shield TV with Kodi and alpha2. Same API keys in both. Today, everything plays correctly at first attempt on the desktop, no buffering, no single video i had to re-try so far.
I did not choose yewtu.be randomly for the example. It works via a browser, but fails in the invidious addon.
That particular instance has API access disabled: https://yewtu.be/api/v1/videos/
I am not suggesting that the solution should be to access Invidious API, all I am pointing out is that Invidious seems to have found a way to produce video URLs that apparently don't have the throttling issue. Ideally the same logic that is used in Invidious could be used in this plugin. (My hack above is just a temporary workaround that happens to work well in the meantime.)
Still having the buffering issue with the alpha 2 release on the following video: https://www.youtube.com/watch?v=7MLdehTdNhk
The video URLs for this video from https://vid.puffyan.us/api/v1/videos/7MLdehTdNhk?fields=dashUrl,formatStreams&pretty=1 seem to play well for me.
Here is looks like working solution: https://github.com/ytdl-org/youtube-dl/issues/29326#issuecomment-942387724 Sourcecode may be interesting, but program shows what exactly it sends to google to obtain proper MPD file with non broken links. Programmers, where I can replace all required 2 parameters?
CoreELEC:~/.kodi/addons/script.module.youtube.dl # fgrep -rn "clientName" */*/*/*.py
lib/youtube_dl/extractor/youtube.py:260: 'clientName': 'ANDROID',
lib/youtube_dl/extractor/youtube.py:2489: 'clientName': 'ANDROID',
lib/youtube_dl/extractor/youtube.py:2871: 'clientName': 'ANDROID',
CoreELEC:~/.kodi/addons/script.module.youtube.dl/lib/youtube_dl/extractor # diff -u youtube.py.orig youtube.py
--- youtube.py.orig 2021-10-13 19:40:21.000000000 +0300
+++ youtube.py 2021-10-13 19:40:03.000000000 +0300
@@ -257,8 +257,8 @@
_DEFAULT_API_DATA = {
'context': {
'client': {
- 'clientName': 'WEB',
- 'clientVersion': '2.20201021.03.00',
+ 'clientName': 'ANDROID',
+ 'clientVersion': '16.05',
}
},
}
@@ -2486,8 +2486,8 @@
data = {
'context': {
'client': {
- 'clientName': 'WEB',
- 'clientVersion': '2.20201021.03.00',
+ 'clientName': 'ANDROID',
+ 'clientVersion': '16.05',
}
},
}
@@ -2868,8 +2868,8 @@
data = {
'context': {
'client': {
- 'clientName': 'WEB',
- 'clientVersion': '2.20201021.03.00',
+ 'clientName': 'ANDROID',
+ 'clientVersion': '16.05',
}
},
'query': query,
It does not help. What I miss else?
That particular instance has API access disabled: https://yewtu.be/api/v1/videos/
Thank you! I had read that when the original invidio.us shut down(1) a year ago, but I could not remember which instance it was. And here(2) is a better table of the instances and their health status. (1) https://omar.yt/posts/stepping-away-from-open-source (2) https://api.invidious.io/
I install the alpha 2 on my Kodi Lelei on android TV. I was woking ones, the second youtube movie stopped every couple of sec and was starting to buffer.
Here is a workaround that works reliably around this issue (while waiting for a proper fix): ... but it seems it is golden.
@probonopd You Sir, are a wizard!! Thank you!! Finally a workaround that fixed the issue for me on my RPi3 with LibreELEC. :100:
Question about the patch that is mentioned above. As seen, it patches youtube.py of script.module.youtube.dl. But kodi's addon does not use that in order to work, so how does it benefit from that patch? I don't even have it installed! Moreover, script.module.youtube.dl was last updated on March, 6+ months ago and 3+ months before the last release of youtube-dl which was in early June.
@pitsi thanks, I think that plugin use youtube-dl and be little bit confused, because my fix does not help. Do you know where I can change "WEB" to "ANDROID" in plugin.video.youtube? Query for MPD, after that, should looks like:
POST /youtubei/v1/player HTTP/1.1
Host: www.youtube.com
X-Goog-Api-Key: A.................8
{"context":{"client":{"clientName":"ANDROID","clientVersion":"16.05"}},"videoId":"Vp9I_m6znMM"}
Sorry, I have no idea. As I have said in various issue reports, my coding skills are close to 0. If I knew anything, I would have ported yt-dlp's fix for the throttling since day 1.
Does anyone else notice the change in the right click > play (select quality) popup that I mentioned above? Or is it just me?
@axvpast you can grab the files that were updated by pull-request 216, here (right-click, Save As):
They're changed in that way already.
To actually use them, you can download the zip for 6.8.18~alpha2, extract it to some place, replace those two files in the extracted files, zip it all back as it was and then install from zip in Kodi.
@RNavega thanks a lot. Just get full file video_info.py from pull request and paste into Kodi. Looks like 100% works! According links to video streams from MPD file c=ANDROID, field aitems is missing, as expected.
@RNavega This works on osmc. Thanks!
@RNavega This works on osmc. Thanks!
~~Does it? I have 6.8.18-alpha2 installed (had to fix the bogus dependency of xmbc-python-2.2.0, OSMC uses 3.0.0) but I am still getting some buffering. It is not as bad as it was and I can pause it for 30 seconds and it will usually continue. But it is by no means fixed I feel. ~~
EDIT: Oh wait I see I have to patch manually. Sorry. Will do that now.
There is a python3 build available, it is the one that has the -matrix suffix in its name, because python3 is a matrix-only feature and osmc uses kodi 19.
Oh, right. I did wonder. The one official from kodi is not been update, and so I did not know it was a separate build.
Thanks.
@axvpast you can grab the files that were updated by pull-request 216, here (right-click, Save As):
* [/resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py](https://github.com/anxdpanic/plugin.video.youtube/raw/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py) * [/resources/lib/youtube_plugin/youtube/helper/video_info.py](https://github.com/anxdpanic/plugin.video.youtube/raw/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/youtube/helper/video_info.py)
They're changed in that way already. To actually use them, you can download the zip for 6.8.18~alpha2, extract it to some place, replace those two files in the extracted files, zip it all back as it was and then install from zip in Kodi.
THIS seems to work. Just installed and played a couple of videos that lagged and buffered before, they now run smoothly.
Oh, right. I did wonder. The one official from kodi is not been update, and so I did not know it was a separate build.
Thanks.
The one from the official repo will be updated when the dev thinks 6.8.18 is good enough to be released as stable.
OK well FWIW It seem with the two above patched files it is working well for me. A few seconds to get Title metadata and cache but then the video start up right are no buffering.
So thanks to @RNavega for his help. Works great on a Vero4K+
@axvpast you can grab the files that were updated by pull-request 216, here (right-click, Save As):
- /resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py
- /resources/lib/youtube_plugin/youtube/helper/video_info.py
They're changed in that way already. To actually use them, you can download the zip for 6.8.18~alpha2, extract it to some place, replace those two files in the extracted files, zip it all back as it was and then install from zip in Kodi.
seems to be working ok for me on pi 3b+ and osmc. If anyone needs to modified zip file, let me know.
@RNavega thanks a lot. Just get full file video_info.py from pull request and paste into Kodi. Looks like 100% works! According links to video streams from MPD file c=ANDROID, field aitems is missing, as expected.
Just done the above on my pi 3a osmc kodi 18.9 and it seem to have fixed the buffering. Also I don't have "mpeg-dash" enabled which, was my understanding, needed in order for this to work. Many thanks. Just reporting.
great! works on pi4, libreelec 9.2.8, kodi 18.9, too! thanks!
Also I don't have "mpeg-dash" enabled which, was my understanding, needed in order for this to work.
@smutax it should work with adaptive formats (what you get when Mpeg DASH is on) as well as the standard formats when it's off.
Also useful to know, nowadays YT only has 360p and 720p as standard formats (edit: most of the time, that is). Any other sizes (either bigger or smaller) are only available if you turn on DASH in the settings. For instance, 1440p, 1080p, 240p.
The one from the official repo will be updated when the dev thinks 6.8.18 is good enough to be released as stable.
@pitsi that's right. The problem right now is that age-restricted videos can't be played with this experimental patch, because it uses a new API that's obscure about how to use the login credentials.
updated both files and it is working again, thx
Kodi 19.2 on Ubuntu here. Two files fix FINALLY worked as a charm! It is now working better than ever before. Thank you 🙏
wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/youtube/helper/video_info.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/youtu
be_plugin/youtube/helper/video_info.py
wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/you
tube_plugin/kodion/impl/xbmc/xbmc_items.py
this works after installing the alpha2 matrix release
wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/youtube/helper/video_info.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/youtu be_plugin/youtube/helper/video_info.py wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/you tube_plugin/kodion/impl/xbmc/xbmc_items.py
this works after installing the alpha2 matrix release
Only tried a few videos, but this works! I've been experiencing the buffering and slow loading for ages (feels like years) to a point where every video is doing it. I hope this fix lasts.
wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/youtube/helper/video_info.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/youtu be_plugin/youtube/helper/video_info.py wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/you tube_plugin/kodion/impl/xbmc/xbmc_items.py
this works after installing the alpha2 matrix release
Only tried a few videos, but this works! I've been experiencing the buffering and slow loading for ages (feels like years) to a point where every video is doing it. I hope this fix lasts.
I've another problem. In this fix method live streams are not playable.
@RNavega
thx, works perfectly on Nvidia Shield Kodi v18.9
wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/youtube/helper/video_info.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/youtu be_plugin/youtube/helper/video_info.py wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/you tube_plugin/kodion/impl/xbmc/xbmc_items.py
this works after installing the alpha2 matrix release
Only tried a few videos, but this works! I've been experiencing the buffering and slow loading for ages (feels like years) to a point where every video is doing it. I hope this fix lasts.
I've another problem. In this fix method live streams are not playable.
Yep can confirm live streams don't work. I chose a bunch of random live streams and they all failed.. I think this part of the log file is relevant to the bug?
2021-10-15 01:49:52.438 T:150722 INFO
: [plugin.video.youtube] Running: YouTube (6.8.18+matrix.1~alpha2) on Matrix (Kodi-19.1) with Python 3.9.7 Path: /play/ Params: {'video_id': 'HNSnlQVj29E'} 2021-10-15 01:49:52.705 T:150722 ERROR : EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS! Error Type: <class 'requests.exceptions.InvalidHeader'> Error Contents: Value for header {Referer: ('https://www.youtube.com/watch?v=HNSnlQVj29E',)} must be of type str or bytes, not <class 'tuple'>
Thanks! The patch fixes the problem for me (Kodi, 18.9 on 2012 macMini). This had to be a Youtube problem, as all downloaders (YT-DL, JDownloader) weren't working this week, only YT-DLP worked as usual). It was clear that the files were buffering at 40K instead of the normal speed when I looked at the info screen while trying to watch a video. Sometimes the buffer would get to 10-20% of the video file, then it would run OK until the slow speed caught up to where the video was actually playing, then it would stall. Again - many, many thanks!
@Anonymous07070707 @LeJimster you can fix the livestream playback problem by removing the comma at the end of line 658 in video_info.py:
basically change
headers['Referer'] = 'https://www.youtube.com/watch?v=%s' % video_id,
to
headers['Referer'] = 'https://www.youtube.com/watch?v=%s' % video_id
@RNavega I' m so thankful, I can look Youtube since month without the buffering issue. How fast the video now starts!!! My system RPI 3b with libreelec and patched (like you mentioned) 6.8.18~alpha2 youtube plugin.
@spirgiuz Nice, yeah that works, simple fix..
@RNavega
Thanks to everyone for the great work! It's nice to have the youtube plugin working properly for the first time in ages.
I can confirm this to be working as well! 👍🏻
@Anonymous07070707 @LeJimster you can fix the livestream playback problem by removing the comma at the end of line 658 in video_info.py: basically change
headers['Referer'] = 'https://www.youtube.com/watch?v=%s' % video_id,
toheaders['Referer'] = 'https://www.youtube.com/watch?v=%s' % video_id
Thanks!
wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/youtube/helper/video_info.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/youtu be_plugin/youtube/helper/video_info.py wget https://raw.githubusercontent.com/anxdpanic/plugin.video.youtube/521a6fdaf75d35a9db7ed72a0ac2aae472ef4cef/resources/lib/youtube_plugin/kodion/impl/xbmc/xbmc_items.py -O ~/.kodi/addons/plugin.video.youtube/resources/lib/you tube_plugin/kodion/impl/xbmc/xbmc_items.py
this works after installing the alpha2 matrix release
Working here on LibreELEC 10.0.0. Thanks!
Are you guys sure about this thing in line 658? This is what lines 656 to 663 say in my .kodi/addons/plugin.video.youtube/resources/lib/youtube_plugin/youtube/helper/video_info.py
656 headers = {
657 'Connection': 'keep-alive',
658 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.3>
659 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
660 'DNT': '1',
661 'Accept-Encoding': 'gzip, deflate',
662 'Accept-Language': 'en-US,en;q=0.8,de;q=0.6'
663 }
6.8.18a2 on kodi 18.9, aka the python2 version.
Also, what is this garbage of an api?! I tried playing this video, a 12 HOUR long video which oddly has 4 hours of duration inside kodi, and EVERYTIME it started from 3:59:45 or so and played for 15 seconds to its end! Other videos from the same channel do not start at all.
https://www.youtube.com/watch?v=eIwLyAOSblE
@pitsi I dont have a hand in this code, but I would assume this is an attempt to mimic some Galaxy S9 smartphone because Google is playing cat and mouse to block playback on "unapproved" apps.
Are you guys sure about this thing in line 658? This is what lines 656 to 663 say in my
.kodi/addons/plugin.video.youtube/resources/lib/youtube_plugin/youtube/helper/video_info.py
656 headers = { 657 'Connection': 'keep-alive', 658 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.3> 659 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 660 'DNT': '1', 661 'Accept-Encoding': 'gzip, deflate', 662 'Accept-Language': 'en-US,en;q=0.8,de;q=0.6' 663 }
6.8.18a2 on kodi 18.9, aka the python2 version.
Also, what is this garbage of an api?! I tried playing this video, a 12 HOUR long video which oddly has 4 hours of duration inside kodi, and EVERYTIME it started from 3:59:45 or so and played for 15 seconds to its end! Other videos from the same channel do not start at all.
https://www.youtube.com/watch?v=eIwLyAOSblE
i edited the video_info.py
file posted above directly, then inserted it in the zip file in the appropriate place (it should overwrite the existing file)
then installed the zip file
in the file above lines 656 - 662 (663 is blank) are:
def _load_manifest(self, url, video_id, meta_info=None, curl_headers='', playback_stats=None):
headers = self.MOBILE_HEADERS.copy()
headers['Referer'] = 'https://www.youtube.com/watch?v=%s' % video_id
headers['Accept'] = '*/*'
if playback_stats is None:
playback_stats = {}
@pitsi after installing 6.8.18a2 did you download the 2 new files video_info.py & xbmc_items.py? (the download links are quoted in the post before yours). You need to edit that video_info.py.
That explains a lot thank you. No, I have not made any changes after installing 6.8.18a2 (the days it was released). I will wait for a new release with the new code.
Can someone that has the files already patched check the video I mentioned above?
@pitsi yeah the same behaviour you've experienced happens when I try to play the video:
https://www.youtube.com/watch?v=eIwLyAOSblE
It claims the video is only 3:59:59 long and starts at 3:59:45, plays for 15s and then stops. I tried 3 or 4 videos from that channel and they all play fine however.
I notice it still detects the video as a live stream even though the stream finished hours ago. I noticed the similar/same behaviour on a few live streams that are actually running right now, except every few seconds the play time is reset to 3:59:45 so it continues playing as long as the stream is running. Another live stream I tried started at 0 but said it was 4 hours long.
UPDATE: That video is now being detected as VOD rather than live and it correctly plays now as kedarz points out below.
I just installed alpha2 and it seems to have solved the issue for me.
Patched 6.8.18a2 seems that the subtitles do not work. It means, no display subtitles. Does anyone have this issue ? @pitsi your film works normaly, time 11:55:00 (720 mpd) Other films on this chanell work too
I just installed alpha2 and it seems to have solved the issue for me.
For me too, but after several videos the problem returned. I solved it after deleting the cache in addon_data, for now it's ok
This seems random, on alpha2 at least. Everything worked fine for me for the past 2 days on the desktop, not a single buffered video. Today, every video is loading slowly and buffering. Alpha2 on my Shield TV still plays everything correctly.
No problem with "play with invidious" patch from a couple posts earlier, this works each time.
To all those who helped resolve this issue.....a BIG THANKS! Now.....every video loads 3 times as fast and the buffering is gone. In the past few days.....the add-on was unusable since every single video buffered for ages. Stopping and starting the video has no effect and didn't help like it used to a month ago. Thanks guys!
Can someone can send me the zip file for Leia please ? @RNavega @Rialtho-the-Magnificent
My email is behind a captcha for obvious reasons. http://scr.im/thedjs
@pitsi your film works normaly, time 11:55:00 (720 mpd) Other films on this chanell work too
Please mention your setup (just kodi version and if mpeg-dash is enabled). For me, today it behaves like the rest of the videos on this channel, it does not start at all. Here is all the info I can get from the log
2021-10-16 06:53:13.429 T:140261690197760 WARNING: Previous line repeats 5 times.
2021-10-16 06:53:13.429 T:140261690197760 ERROR: /storage/.kodi/addons/script.module.urllib3/lib/urllib3/connectionpool.py:1004: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
InsecureRequestWarning,
2021-10-16 06:53:16.146 T:140263158143104 NOTICE: VideoPlayer::OpenFile: plugin://plugin.video.youtube/play/?video_id=eIwLyAOSblE&incognito=True
2021-10-16 06:53:16.324 T:140261698590464 NOTICE: Creating InputStream
2021-10-16 06:53:16.652 T:140261698590464 NOTICE: Creating Demuxer
2021-10-16 06:53:46.766 T:140261698590464 ERROR: Open - Error, could not open file https://r3---sn-vuxbavcx-5uiel.googlevideo.com/videoplayback?expire=1634377992&ei=qExqYa3JKofV1gKb9LGYBw&ip=87.202.19.130&id=o-AJyDejb1Y6zFRNAj11qPCtFdJ7Tb4Gy8QYDP2iqNz74f&itag=22&source=youtube&requiressl=yes&mh=T7&mm=31%2C29&mn=sn-vuxbavcx-5uiel%2Csn-4g5edns6&ms=au%2Crdu&mv=m&mvi=3&pcm2cms=yes&pl=22&initcwndbps=868750&vprv=1&mime=video%2Fmp4&ns=mTdY-CKAKgyL53oH0Kz3p1UG&cnr=14&ratebypass=yes&dur=42900.050&lmt=1634318835069448&mt=1634356143&fvip=3&fexp=24001373%2C24007246&c=WEB&txp=7316222&n=d0yjjiNiqHOoz6_BB&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cns%2Ccnr%2Cratebypass%2Cdur%2Clmt&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpcm2cms%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAK5JfZm3Pj9wErOKykhB0ug88tiZgPeygoYW4hyxcaueAiEA3Ecy726VdTXXMPYhjnPv1smmku4WIMszRg0cd_FYlj4%3D&sig=AOq0QJ8wRQIgSlMrNl4izBwq7wUUeyHQxr5kFzkQBKAIUOZjAYTGmKYCIQDMOyAmhn-uYKWBv3GHGxBTK7JhanbTD60PmKLZa6GAIQ==
2021-10-16 06:53:46.766 T:140261698590464 ERROR: OpenDemuxStream - Error creating demuxer
2021-10-16 06:53:46.766 T:140261698590464 NOTICE: CVideoPlayer::OnExit()
2021-10-16 06:53:46.780 T:140263158143104 NOTICE: CVideoPlayer::CloseFile()
2021-10-16 06:53:46.787 T:140263158143104 NOTICE: VideoPlayer: waiting for threads to exit
2021-10-16 06:53:46.787 T:140263158143104 NOTICE: VideoPlayer: finished waiting
Don't ask me about script.module.urllib3. It is a dependency of neither plugin.video.youtube, nor inputstream.adaptive.
Huge Thanks to the Folks who worked on the FIX so fast, and made the fix speed up the initial loading of video. YouTube add-on just got awesome after the patch. The buffering is completely eradicated i feel. Never found a buffering pause after the patch. I'm on RPI 3B+ and the video starts to play within 4 seconds after i press - play on kodi, which is a huge speed up since it took 10secs previously.
Context
Please provide any relevant information about your setup
Expected Behavior
Normally playing without buffering
Current Behavior
Buffering at almost every played video in FHD or HD
Log
t.ly/9ItW
Additional Information
How about? It is already several months that there is this problem. I use the official YT app in FireStick, and no buffering.