Hi. I have a problem that makes it very hard for me to even attempt getting any kind of viewerbase on twitch.
I've send an email to twitch regarding this issue, and I thought I'd copy that email to this forum post in hope that I might find the answer to my problems here.
I appreciate all the help/tips/tricks you may give me. Here's the email I sent to twitch regarding my issue:
'
Hi Twitch Support!
I'm a streamer at twitch, but I have one issue. 80% of my viewer count (even though it's not that high) keeps buffering on my stream. I've tried lowering the quality more and more, but the issue remains. I have no dropped frames and like I said, it only happens to certain people (and yes, most of them have very good internet). So my question is basically if it's something with the twitch server I'm streaming from. I can't lower my quality much more, then it will basically be unwatchable.
I can give you some information about my computer specs, OBS settings and stuff.
PC Specs:
Motherboard: MSI Z97 G5
CPU: Intel Core i7 4790K 4GHz, 8MB
GPU: EVGA Geforce GTX 780
RAM: Corsair Vengence 16GB 2400Mhz
PSU: Corsair TX850M
CPU Cooler: Be quiet! Dark Rock 2
Chassi: Corsair 600T White
Internet: 92 Mbps Down and 10Mbps Up
Should be more than enough power for my computer to handle streaming.
OBS Settings (the most vital)
Resolution: 1280 x 720
Max Bitrate: 2200
Use CBR: Yes
Enable CBR Padding: Yes
Nvidia NVENC: Yes
Codec: ACC
Audio Bitrate: 160
FMS URL: EU Stockholm, SE (where I live)
FPS: 48
Resolution Downscale: No
NVENC Preset: Automatic
Encoding Profile: Main
Keyframe Interval: 2
Use CFR: Yes
If there are any more settings you need to know, I'd be happy to provide you with them.
The game I stream the most is Counter-Strike: Global Offensive. An Actionpacked game which (for a good quality stream) requires high bitrate and preferbly 60 FPS. My Computer can handle it, but I don't want my viewers to be unable to watch my stream due to buffering several times a minute.
I look forward to your response, and hopefully we can work this matter out.
Kind Regards
Stefan 'FOXYtime' Rehnfeldt'
  1. Twitch Buffering 2017 Chrome Web
Twitch
  1. Solution 1: Disable Hardware Acceleration (Google Chrome Users) If you are using Google Chrome to connect to Twitch, you might want to consider disabling hardware acceleration in Chrome settings as that simple tweak was able to help plenty of users get rid of the Twitch buffering problem once and for all.
  2. Well, as you might have guessed, there is a way to force YouTube buffering. Here’s how you can fully buffer a YouTube video on Chrome and Firefox: On Chrome. For Chrome users, we’ve got two methods, so you can just pick a method which fits you the best. However, there are some limitations to these methods, which we will be mentioning.
Twitch Buffering 2017 Chrome

Twitch.tv via firefox/chrome is buffer galore. So I started to use tards playa – worked great, but now I'm starting to get buffer issues on it, only today though. I mainly watch overseas streams for CSGO. I have 100/40 FTTP in Perth (Pinjarra). Twitch issues – occasionally, Twitch will experience server issues that will result in their platform not functioning correctly. This may cause lag or buffering. If it is their issue, you can typically find updated on their support Twitter account. Typically, your Twitch will continue to buffer if your internet speed isn’t up for the task.

Twitch Buffering 2017 Chrome Web

Audio/Video

Everything you need to know about audio/video inside Chromium and Chromium OS!

Whom To Contact

It's best to have discussions on chromium-dev@chromium.org or media-dev@chromium.org for media specific matters.
We are component Internals>Media on the Chromium bug tracker.

Documentation

See media/README.md. For historical reference, here's the original design doc for HTML5 audio/video.
Container formats
  • MP4 (QuickTime/ MOV / MPEG4)
  • Ogg
  • WebM
  • WAV
  • HLS [Only on Android and only single-origin manifests]

  • FLAC
  • MP3
  • Opus
  • PCM 8-bit unsigned integer
  • PCM 16-bit signed integer little endian
  • PCM 32-bit float little endian
  • PCM μ-law
  • Vorbis
  • AAC [Main, LC, HE profiles only, xHE-AAC on Android P+] [Google Chrome only]
  • AMR-NB [Google Chrome OS only]
  • AMR-WB [Google Chrome OS only]
  • GSM [Google Chrome OS Only]
  • VP8
  • VP9
  • AV1 [Only Chrome OS, Linux, macOS, and Windows at present]
  • Theora [Except on Android variants]
  • H.264 [Google Chrome only]
  • MPEG-4 [Google Chrome OS only]

Code Location

media/ - Home to all things media!
media/audio - OS audio input/output abstractions
media/video/capture - OS camera input abstraction
media/video - software/hardware video decoder interfaces + implementations
third_party/ffmpeg - Chromium's copy of FFmpeg
third_party/libvpx - Chromium's copy of libvpx

third_party/blink/renderer/core/html/media/html_media_element.{cpp,h,idl} - media element base class
third_party/blink/renderer/core/html/media/html_audio_element.{cpp,h,idl} - audio element implementation
third_party/blink/renderer/core/html/media/html_video_element.{cpp,h,idl} - video element implementation
media/base/mime_util.cc - defines canPlayType() behaviour and file extension mapping
media/blink/buffered_data_source.{cc,h} - Chromium's main implementation of DataSource for the media pipeline
media/blink/buffered_resource_loader.{cc,h} - Implements the sliding window buffering strategy (see below)
third_party/blink/public/platform/web_media_player.h - Blink's media player interface for providing HTML5 audio/video functionality
media/blink/webmediaplayer_impl.{cc,h} - Chromium's main implementation of WebMediaPlayer

How does everything get instantiated?

WebFrameClient::createMediaPlayer() is the Blink embedder API for creating a WebMediaPlayer and passing it back to Blink. Every HTML5 audio/video element will ask the embedder to create a WebMediaPlayer.
For Chromium this is handled in RenderFrameImpl.

GN Flags

There are a few GN flags which can alter the behaviour of Chromium's HTML5 audio/video implementation.
ffmpeg_branding
Default: $(branding)
Chrome - includes additional proprietary codecs (MP3, etc..) for use with Google Chrome

Alters the list of codecs Chromium claims to support, which affects <source> and canPlayType() behaviour
Values:
0/false - <source> and canPlayType() assume the default set of codecs
1/true - <source> and canPlayType() assume they support additional proprietary codecs

How the %#$& does buffering work?

Chromium uses a combination of range requests and an in-memory sliding window to buffer media. We have a low and high watermark that is used to determine when to purposely stall the HTTP request and when to resume the HTTP request.
It's complicated, so here's a picture: