Ten Reasons Youtube's Streaming is Awful

I did a test of Youtube and its streaming has tons of problems. Here's 10 reasons why Youtube's streaming is mostly pointless when compared to Twitch. I'll use Twitch for streaming, then post to youtube.

Reposted from Learn JS the Hard Way By Zed A. Shaw

Ten Reasons Youtube's Streaming is Awful

I tested Youtube's streaming in preparation for the JavaScript Level 1 live training and I have to say, it's awful. I'm actually kind of shocked how a company with this much money can be so bad at simple UI problems After this test I'm convinced it's going to be easier to stream on Twitch for you and me, but I want to lay out exactly what the problems are so people understand why.

Here is my, "Ten Reasons Youtube's Streaming is Awful":

1. Pointless Workflow

The vast majority of the problems in this list all come from Youtube not understanding or figuring out what the ideal workflow should be for a streamer. Currently, most people do this:

  1. Stream to Twitch and save locally.
  2. Edit the video for Youtube's audience.
  3. Upload the refined video to Youtube.

When you stream to Youtube directly then you'd end up with two videos with basically the same content on the platform, both competing for viewers. As far as I can tell, this is Youtube's imagined workflow for streamers:

  1. Stream to Youtube.
  2. Use their crappy "editing" tool to trim it.
  3. Save a copy of the edit.
  4. Post that copy as a..uh...uhm...another video?

Obviously you could save locally and edit just like with Twitch, but then...why bother using Youtube if you're doing that anyway? This is why many people who stream to Youtube seem to have a "VODs" channel, where they put the fairly boring unedited streams so it doesn't compete with their main channel.

This is such a weird design that I have to think they just kind of bolted streaming on, and the rest of the criticisms in this list confirm this theory.

2. You Can't Trim the Stream

Something I could never figure out about Youtube streams is why they leave huge "Stream Starting Soon..." chunks at the start of their published video. Then I saw this Video by the Spiffing Britt on "How to Edge Youtube" where he effectively starts announcing a live stream but never starts it. Youtube apparently will show your soon to be live stream to tons of people in the first hour before a stream starts, so if you constantly bump the starting time then you trick Youtube into showing your video to more and more people. You really should watch the video to see him do it.

So, all those videos you see with 2 hour "Starting Soon..." times are probably doing this, and then the Youtube editor has so many problems that people just don't bother trimming that off so they don't lose all those impressions. Now, you can trim the stream, but the UI is really bad, has problems just playing the video, and then can't actually edit the stream.

3. You Have to Save a Copy

What? Yes, Youtube's editor can't actually edit the stream. You see, Youtube comes from Google, and Google is famous for claiming that "real programmers don't delete." They spent about a decade trying to convince everyone that never deleting something is the way the world should work, and most of their infrastructure has this problem. Remember that debacle where Google+ let Developers access 52 million accounts. One thing I remember from this debacle was that because Google famously refused to delete anything people had access to everyone's deleted messages too. Feel free to correct me if I'm wrong, but I very much remember this being one of the big complaints.

Why does this matter? Well, that design "philosophy" seems to be present at Youtube, because if you trim a stream you just uploaded then Youtube won't edit that stream. No, you have to Save a Copy. That saved copy is then put into your Channels videos as if you uploaded it. So now you have two videos competing for viewers instead of one video that's a bit cleaned up.

Why would they do this? Oh, obviously the team that works on Youtube feels they're competing with the team working on Live streams, so they refuse to make it possible to trim videos so that they're getting juicy video uploads for the stats they need to get next year's bonuses. You laugh but I bet that's why, and it's a hilariously bad decision with huge costs.

Costs? Yes, if I edge Youtube with a 1 hour lead up to my stream, and then save that video, it's in Youtube's best interest to make me trim my video. They can simply hold the video until I've trimmed it and then process it. With their current system they have to process a full length video with garbage on both ends and a copy of that video I just uploaded that's significantly different.

Remember, this is the company that won't bother converting your video to vp9 if it has less than 1 million views. If they're that cost conscientious when it comes to encoding then the only way they'd double encode videos is if there's some huge internal politics involved.

4. Video Quality is 720p

I have to laugh at the possible idea of some passive aggressive developers at Youtube pissing at each other over code repos. When you do trim a video and save a copy, that copy is encoded as 720p max. I definitely uploaded a 1080p video. You just know there's some team at Google that gets bonuses based on total number of bytes uploaded, but the team in charge of encodings is probably penalized for costs, so when they get told to double encode they throw in a subtle middle finger of "720p that garbage."

Normally this probably isn't a big deal, but when the stream has text 720p really only works if you can control the encoder very closely. When I do 720p I'm setting very specific settings in ffmpeg to make sure that I max out the quality at that size and bitrate, plus tunings that work well for text and simple graphics. My talking head may get pixelated randomly, but the text usually comes out very clear with my settings.

5. Viewer Stats Penalties

Given all this, to use Youtube live streaming I'd have to do something like this:

  1. Live stream to Youtube.
  2. Don't save it, or make a "VODs" channel like others.
  3. Edit the stream then upload it like a normal Youtube video.

The problem is, I would lose all the viewers on the live streams, and that means Youtube would probably knock my videos down in the rankings. Imagine if I stream to 1000 people, well I'd want to keep that video. Like Spiffing Brit showed, if you edge the live stream you get tons of viewers waiting, and then Youtube thinks that video is popular. If I then delete that live stream then I lose all that Juice. If I then upload it again Youtube will most likely ignore it.

The other solution is to not live stream at all, but instead to do a "premiere" which is just dumb. The whole point is to give people live education so they can interact with me...live...because it's live...a premiere is not live.

6. Setup is Difficult

A minor annoyance is that Youtube's setup is far more difficult than Twitch's configuration, but I actually understand why Youtube is doing this. With Twitch you set a few options that most people leave alone, and then stream. If you set it up right you may never need to change your Twitch configuration and can just stream right away.

Youtube's configuration involves setting everything for every stream. You have to declare the language, whether it's for kids, tags, descriptions, etc. and then you can stream. I know why they're doing this, since they have gone completely insane trying to exploit children for ad revenue they are very interested in these settings. They have to make sure you never say a bad word in the first 8 minutes of a video (while they show you clips from Nazis and cam girls simulating sex) so that checks out.

7. No Phone Chat or Moderation

Twitch has a very good phone application that lets you easily moderate your chat (to a limit of course). I use it to view chat messages and if someone's spamming or being an ass I just click their name once, and say block. I can also edit the stream's settings and a few other things that are handy.

Youtube's app...is Youtube. There's no phone app I could find, and the "Creator's Studio" is only for the video side of with no live stream support. There's no chat you can view, no way to edit your stream, nothing. Not sure how a trillion dollar company can't figure this out, but if Youtube can't make this kind of app then there's no hope for any of us.

8. Moderation is Difficult

So now I have to use the Youtube chat, which is reasonable but moderation is still far too difficult. Twitch seems to have gone through more growing pains when it comes to moderation so it seems to be better at it, and there's a lot of services you can employ to make it easier. With Youtube I struggled to figure it out before giving up. I'm sure moderation is there, but it didn't seem as smooth as Twitch's features.

9. API Docs are Totally Wrong

One thing I want to work on is integration with Youtube, so I went to check out the docs and they're totally wrong. First, let's repeat the docs here:

  1. Use this wizard to create or select a project in the Google Developers Console and automatically turn on the API. Click Continue, then Go to credentials. No, there is no "go to credentials here."
  2. On the Create credentials page, click the Cancel button. What? No there's nothing to Cancel.
  3. At the top of the page, select the OAuth consent screen tab. Select an Email address, enter a Product name if not already set, and click the Save button. No, you don't need Oauth2 to use Youtube's API.
  4. Select the Credentials tab, click the Create credentials button and select OAuth client ID. No, none of this is necessary.

After this it's all garbage because you don't need Oauth2, and you can't even get to that from this mysterious "Go to credentials." I had to search for "Credentials" in the search bar, browse through different screens until finally I could make an API key. The docs are completely wrong and I'm not sure how they don't know this, but it gets worse.

10. JavaScript API Demo is 90s Quality

The API demo for JavaScript was written in 2018 but reads like it's from 1999. It uses var and function, but more importantly it uses the above stupid Oauth2 configuration that's entirely unecessary for someone getting started. Oauth2 is infinitely more complex than a simple API key, and most platforms have moved away from Oauth2 unless it involves getting permission from a user. This demo doesn't need any of that, and it ends up confusing the issue. Here's my version that works and is modern:

let fs = require('fs');
let {google} = require('googleapis');

const getChannel = (key) => {
  let service = google.youtube('v3');

  service.channels.list({
    key,
    part: 'snippet,contentDetails,statistics',
    forUsername: 'GoogleDevelopers'
  }, (err, response) => {
    if (err) {
      console.log('The API returned an error: ' + err);
    } else {
      console.debug(JSON.stringify(response.data, null, 4));
    }
  });
}

let api_key = fs.readFileSync("api_key.txt").toString();
getChannel(api_key);

This is all you need once you get an API key that you put into api_key.txt. I have no idea why they haven't updated the example in 5 years, but that was kind of the last straw.

Back to Twitch

I hate to keep pulling the rug on people, but I think the most optimal way to do this is to stream to Twitch where it's easier for everyone to view and easier for me to stream, then upload a nicely edited video to Youtube that people on Youtube can watch. You should subscribe to my Twitch at @zedashaw if you want to watch live, and if you're only on Youtube then you can watch offline and use comments to ask questions.


More from Learn Code the Hard Way

Exploring the Replacement for C as an Educational Language

My thoughts so far on finding a replacement for C in teaching compiled languages and memory safety.

ResearchPublished Apr 20, 2024

How to Read Programmer Documentation

An excerpt from Learn Python the Hard Way, 5th Edition that explains how I analyze learn from projects with poor or no documentation (which is most of them).

PythonPublished July 29, 2023

The 5 Simple Rules to the Game of Code

An experimental idea to teach the basics of a Turing machine before teaching loops and branching. Feedback welcome.

PythonPublished July 29, 2023

Announcing _Learn Python the Hard Way_'s Next Edition

Announcing the new version of _Learn Python the Hard Way_ which will be entirely focused on Pre-Beginner Data Science and not web development.

AnnouncementPublished May 11, 2023