├── img ├── settings-audio.png ├── settings-output-streaming.png ├── settings-video-resolution.png ├── 720p-settings-video-resolution.png └── 1080p-settings-video-resolution.png ├── pdf └── streaming-equipment.pdf ├── continuity.md ├── FAQ.md ├── bot-commands.md ├── day-of-checklist.md ├── README.md ├── streamers-guide.md └── LICENSE /img/settings-audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-platforms-streaming/streaming-docs/HEAD/img/settings-audio.png -------------------------------------------------------------------------------- /pdf/streaming-equipment.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-platforms-streaming/streaming-docs/HEAD/pdf/streaming-equipment.pdf -------------------------------------------------------------------------------- /img/settings-output-streaming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-platforms-streaming/streaming-docs/HEAD/img/settings-output-streaming.png -------------------------------------------------------------------------------- /img/settings-video-resolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-platforms-streaming/streaming-docs/HEAD/img/settings-video-resolution.png -------------------------------------------------------------------------------- /img/720p-settings-video-resolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-platforms-streaming/streaming-docs/HEAD/img/720p-settings-video-resolution.png -------------------------------------------------------------------------------- /img/1080p-settings-video-resolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cloud-platforms-streaming/streaming-docs/HEAD/img/1080p-settings-video-resolution.png -------------------------------------------------------------------------------- /continuity.md: -------------------------------------------------------------------------------- 1 | # Continuity Plan 2 | 3 | As of 2020-09-28 4 | 5 | ## People 6 | 7 | Currently [Chris Short](https://github.com/chris-short) streams and produces (as well as, hosts as needed) the majority of shows on [Red Hat Livestreaming](https://red.ht/livestreaming). But, in case Chris is unavailable due to technical or other issues we've lined up the following folks to help cover the [Streamers](https://github.com/cloud-platforms-streaming/streaming-docs#streamers) and [Producers](https://github.com/cloud-platforms-streaming/streaming-docs/blob/master/README.md#producers) responsibilities. Please understand, this isn't their full time responsibility and when working together, more communication is better than less: 8 | 9 | * Erik Jacobs ([thoaraxe](https://github.com/thoraxe)) 10 | * Andrew Sullivan ([acsulli](https://github.com/acsulli)) 11 | * Natale Vinto 12 | * Eric Hendricks 13 | * Michael Foster 14 | 15 | As mentioned, these folks aren't doing this regularly as part of their day-to-day jobs. They are trained and technical folks but, please don't consider them as go to folks for producing bespoke shows or series. 16 | 17 | Please use the [New Media Initiative Proposal](https://red.ht/streamform) form to propose topics for the channel. 18 | 19 | ## Process 20 | 21 | If the slotted Streamer/Producer is unable to stream but, able to communicate they should inform the next in line of their issues and need to handoff responsibilities as soon as possible. If the next inline isn't available, keep going down the list. 22 | 23 | If you plan on being out for prescheduled shows please find a replacement for yourself early. Be sure they have the same invites you have, and definitely check-in with them the day before to make sure they realize what year it is. 24 | 25 | ## Tools (or How) 26 | 27 | Emailing and informing via [Slack](https://coreos.slack.com/archives/C01456K7G2H) all producers on this page of your issues is a critical step in the handoff process. 28 | 29 | If you're able to hit up the Streaming channel on GChat, that's helpful too. But, as determined in the 2020-09-28 Production Meeting, the [Slack Streaming Channel](https://coreos.slack.com/archives/C01456K7G2H) is the official go to source for Red Hat Livestreaming help, conversations, etc. 30 | 31 | Thank you! 32 | -------------------------------------------------------------------------------- /FAQ.md: -------------------------------------------------------------------------------- 1 | # Red Hat Live Streaming Overview/FAQ 2 | 3 | Handy link to this doc: https://red.ht/streamfaq 4 | 5 | If this FAQ needs additional information, feel free to to submit a pull request or raise an issue. 6 | 7 | Why live streaming? The COVID-19 pandemic has affected almost every event on the planet. We need a better way to connect to customers, partners, contributors, and communities. 8 | 9 | The ideal situation is that this connection point remains a very natural and human experience. Think of it as a TV show with a live studio audience (in the form of chat) for all things Kubernetes and OpenShift but, a more relaxed environment where people are human and relatable. 10 | 11 | ## What’s our URL? 12 | 13 | Please use [Red Hat Livestreaming](https://red.ht/livestreaming). 14 | 15 | It contains all the platforms we're currently streaming to as well as the calendar. This allows everyone to choose the setup that works best for them. 16 | 17 | ## Is there a public calendar? 18 | 19 | Yes! 20 | 21 | https://red.ht/streamcal 22 | 23 | You can add this calendar to your own by clicking the “+Google Calendar” icon in the lower right-hand corner of the page. 24 | 25 | ## Have an idea for a live stream? 26 | 27 | Please use the Red Hat Livestreaming Topic Proposal Form. We are very welcoming of streams that involve customers, upstream contributors, Accelerators, Partners, etc. Please use the form to act as a steward and/or handoff from outside the company to inside. 28 | 29 | Red Hat Livestreaming Topic Proposal Form: 30 | https://red.ht/streamform 31 | 32 | ## What are the needed roles to stream? 33 | 34 | We see three “[Personas](https://github.com/cloud-platforms-streaming/streaming-docs#personas)” on every stream. Keep in mind that, in theory, all three Personas can be held by the same person: 35 | 36 | * [Guests](https://github.com/cloud-platforms-streaming/streaming-docs#guests) 37 | * [Producers](https://github.com/cloud-platforms-streaming/streaming-docs#producers) 38 | * [Streamers](https://github.com/cloud-platforms-streaming/streaming-docs#streamers) 39 | 40 | ## What does it take to stream? 41 | 42 | Building a great stream is not for the faint of heart. We’ve documented so much already with plenty more to document every day. Please make suggestions and add issues from your own experience participating in our streams. This is an open source project that we are working with upstream contributors to help other live streaming efforts. 43 | 44 | Streaming Docs: https://github.com/cloud-platforms-streaming/streaming-docs 45 | 46 | Streaming Tools/Assets: https://github.com/cloud-platforms-streaming/streaming-tools 47 | 48 | Equipment Suggestions: [Streaming Equipment](pdf/streaming-equipment.pdf) 49 | 50 | ## Can I run pre-recorded content? 51 | 52 | Always live is our mantra but, some pre-recorded content in the stream is possible. Please use the [Red Hat Livestreaming Topic Proposal Form](https://red.ht/streamform) to submit your idea. 53 | 54 | ## I am lazy, can you give me a template to send to Red Hatters about the stream? 55 | 56 | Hi! 57 | 58 | Red Hat's [Red Hat Livestreaming][1] is awesome. Please check it out and sign up to follow it! You can find out the schedule on our [public calendar][2]. If you have your own ideas, please [submit them][3]! If you have any questions, we have a full [FAQ][4]. 59 | 60 | ## I am lazy, can you give me a template to send to non-Red Hatters about the stream? 61 | 62 | Hi! 63 | 64 | Red Hat's [Red Hat Livestreaming][1] is awesome. Please check it out and sign up to follow it! You can find out the schedule on our [public calendar][2]. If you have your own ideas, please let me know! 65 | 66 | [1]: https://red.ht/livestreaming 67 | [2]: https://red.ht/streamcal 68 | [3]: https://red.ht/streamform 69 | [4]: https://red.ht/streamfaq 70 | 71 | ### Points of Contact 72 | 73 | Chris Short: cshort@redhat.com 74 | Alexa Overbay: ahollis@redhat.com 75 | -------------------------------------------------------------------------------- /bot-commands.md: -------------------------------------------------------------------------------- 1 | # Bot Commands 2 | 3 | As of 2020-12-02 4 | 5 | ## Restream 6 | 7 | The following bot commands are for use and managed in [Restream Chat](https://restream.io/chat-product): 8 | 9 | | Command | Output | 10 | |:-------------|:-------| 11 | | !archive | Miss a previous episode that's expired off Twitch? Have no fear, YouTube is here! https://www.youtube.com/user/rhopenshift | 12 | | !askquestions| Welcome all! Please feel free to ask questions via chat and we'll get them answered even if the expert isn't on the line right now. | 13 | | !blog | Checkout the latest news and tips on the OpenShift blog. You might even see a few familiar names from the channel. https://red.ht/openshift-blog | 14 | | !cal | Red Hat Streaming Calendar — https://red.ht/streamcal — Note: Click the + in the bottom right of the Google Calendar to add to your own calendar. | 15 | | !commons | OpenShift Commons: Where users, partners, customers, and contributors come together to collaborate and work together on OpenShift. Learn more at https://red.ht/stream-commons | 16 | | !discord | Feel free to join our Discord to continue the discussion: https://red.ht/discord | 17 | | !ebooks | Need some reading material on some cloud native software? We've got just the thing! Check out all our free eBooks: https://red.ht/all-the-ebooks | 18 | | !helpernode | In this live stream, Christian Hernandez and Chris Short walk through what helpernode is, how to get the helpernode up and running, and getting an OpenShift 4 cluster stood up with helpernode's assistance. https://youtu.be/wZYx4_xBSUQ | 19 | | !knative | Get a free copy of the O'Reilly Knative Cookbook by Burr Sutter & Kamesh Sampath https://red.ht/knative-ecookbook | 20 | | !learn | Checkout https://red.ht/stream-learn for Katacoda courses designed to help you learn more about Red Hat OpenShift | 21 | | !makeyourmark | Join a community of passionate tech users, customers, and practitioners The Red Hat Accelerators program is a global enterprise customer community of Red Hat technology experts and enthusiasts who willingly share their knowledge and expertise with peers in the industry, their community, and with Red Hat. https://red.ht/makeyourmark | 22 | | !operators | Get the Kubernetes Operators O'Reilly book for free! This book explains what an Operator is and how Operators extend the Kubernetes API. It shows how to deploy and use existing Operators, and how to create and distribute Operators for your applications using the Red Hat Operator Framework. https://red.ht/operators-ebook | 23 | | !patterns | Get your own copy of the Kubernetes Patterns O'Reilly eBook for free! With this book, you'll learn to create cloud-native applications with Kubernetes as a runtime platform, manage container and platform interactions, apply configuration patterns to your Kubernetes-based applications, and build container images directly within the cluster. https://red.ht/k8s-patterns-ebook | 24 | | !slides | If slides are available they are posted at https://speakerdeck.com/redhatopenshift | 25 | | !tluh | Want to take the next step in leveling up your knowledge and career? We’ve got you covered! Head over to https://red.ht/leveluphour to take advantage of learning materials and exam discounts. | 26 | | !try | Get started with OpenShift — Try Red Hat OpenShift 4 now, or set up your own clusters in the environment of your choice. https://red.ht/stream-try | 27 | | !welcome | Welcome all! Thank you for joining us. We're happy to have you here with us today. Feel free to ask questions and we'll be happy to answer. Enjoy! | 28 | 29 | ## Streamlabs 30 | 31 | The following bot commands are for use in Twitch chat and are controlled by [Streamlabs](https://streamlabs.com/dashboard#/cloudbot/commands/custom): 32 | 33 | | Command | Output | 34 | |:-------------|:-------| 35 | | !followage | {touser.name} has been following {channel.name} for {touser.followage}. | 36 | | !hug | /me hugs {target.name} <3 | 37 | | !uptime | The stream has been live for {uptime}. | -------------------------------------------------------------------------------- /day-of-checklist.md: -------------------------------------------------------------------------------- 1 | # Live Stream Day of Checklist 2 | 3 | ## Pre-Event Logistics 4 | 5 | 1. Pre-schedule the Zoom call (you'll need a paid account or someone with one)[1](#footnote1) 6 | 1. Copy the invite details into a calendar invite including your Guests, Producer, and Streamer with a fifteen minute setup time buffer ahead of the event. 7 | 1. Create an event for the **public calendar**; include a description folks can use for social and add only redhatstreaming AT gmail DOT com to that invite. Include a link to the YouTube video from the preferred channel as the location. It never hurts to include a link to in the description (NEVER share the Zoom details publicly[2](#footnote2)) 8 | 1. A public calendar maintainer will make sure the invite for public consumption is published 9 | 1. You need a stream key for OBS (or otherwise capable software); ask Erik Jacobs or Chris Short through official Red Hat channels (if you're using Restream Live this isn't an issue usually). 10 | 11 | **NOTE: It's highly encouraged to test streaming with your own account(s) to get the hang of it.** 12 | 13 | ## Pre-stream 14 | 15 | 1. Establish a back channel to communicate with all participants. Slack or GChat can be used but make sure you're not spamming the live stream with notification sounds (Do Not Disturb is your friend). Using the Zoom or BlueJeans chat (you're all in it automatically) has drawbacks as well (like displaying when there are messages publicly to the world) 16 | 1. Download the streaming-tools repo (put it in /opt/ on Linux/macOS or C:\ for Windows) 17 | 1. Linux users: Install the [Linux Browser plugin](https://github.com/cloud-platforms-streaming/streaming-docs/blob/master/streamers-guide.md#linux-browser-plugin) 18 | 1. Check your OBS scenes are configured correctly. Zoom launches two windows; make sure the right Zoom window is selected in the Main Zoom Scenes -> Mac/Linux Zoom Window 19 | 1. Note: If you're using PrimeTime, open a browser window and go to the URL for the event. You can use the "OpenShift_What's_New" Scene Collection in OBS for anything non-Commons on BlueJeans Primetime (Commons has their own scene collection). 20 | 1. Rotate through the scenes; make sure you're seeing what is expected. OBS will automatically tell you if an asset is missing when you switch to the scene. All assets are in the streaming-tools repo. 21 | 1. Get everyone on Zoom EARLY so you can test their setups, font sizes, screen sharing, etc. 22 | 1. Make sure Side by Side in Zoom Settings is enabled (buried in Zoom Screen Sharing settings) 23 | 1. Make sure you're in Gallery View (not available until two people are on call) 24 | 1. Make sure font sizes look good when screen sharing 25 | 1. Update the title and description of the show in [Restream](https://app.restream.io/titles) (note: happens immediately; will impact content that's currently on air) 26 | 1. Make sure all the destinations are set correctly in [Restream](https://restream.io/channel) 27 | 1. In Restream, make sure you're streaming to the right YouTube events (buried in Restream's channel sections) 28 | 1. About 90 seconds before the scheduled stream start time; click Start Streaming on the "Starting Soon" Scene (unless of course you're still cat herding in which case it is recommend hitting the Starting Soon animation at the start time). 29 | 1. Make sure you have at least one of the streaming platforms open and muted (Twitch/YouTube/etc.) so you can participate in the chat and get audience questions answered. 30 | 31 | ## Go Live 32 | 33 | 1. Ask participants to be quiet 34 | 1. Switch Scenes to the Intro Bumper 35 | 1. Once Intro Bumper plays, switch to the Main Zoom Scene 36 | 1. You're now live! 37 | 38 | ## Ending the stream 39 | 40 | 1. Encourage folks to follow the channel (like and subscribe) 41 | 1. Point folks to the calendar at every chance (https://red.ht/streamcal) 42 | 1. Tell people about upcoming streams 43 | 1. Once the bumper is complete, switch scenes to "Ended". Let that run for a few seconds. 44 | 1. Hit Stop Streaming in OBS (this will send the end stream signal to the various services) 45 | 1. The stream is complete. 46 | 47 | 1: Zoom has a "feature" that prevents an account from being on two calls at once. We have two separate Zoom accounts as a result. If your event prep time overlaps with an existing show, you will need to use the alternative Zoom account. 48 | 49 | 2: [Zoombombing](https://en.wikipedia.org/wiki/Zoombombing) is a thing and was a major problem in the Kubernetes community for awhile as well as at the beginning of the COVID-19 pandemic. If you accidentally expose the Zoom link publicly, even for a second, create a new meeting link in Zoom. It's worth it, trust me. 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Streaming Docs 2 | 3 | A great part about streaming platforms is that you can stream from almost any device. This allows for more natural conversations. However, when you start pulling in multiple people for a chat, streaming it, adding graphics to the stream, etc. things can get complicated. In practice, we try to keep things simple. In reality, live streaming is a learned skill and there's a lot of ways to get to the same outcome. These docs aim to help educate others about how [Red Hat Livestreaming](https://red.ht/livestreaming) is run. 4 | 5 | Please note there is an internal Red Hat Livestreaming README doc that contains additional information that's unsafe to share publicly. Contact any producer 6 | 7 | ## Have an idea for a live stream? 8 | 9 | This form will send your idea to the New Media Initiative for proper review. 10 | 11 | 12 | 13 | ## Personas 14 | 15 | Three main roles need to be played to do a stream. Guests, Producers, and Streamers. In reality, one person can do a stream by themselves. But, we call out these specific personas because they all have some requirements and responsibilities. 16 | 17 | The number one rule of all these personas is the be authentic and transparent. Be you, be real. It's okay to make some mistakes during the live streams, that makes it very real for folks. 18 | 19 | ### Guests 20 | 21 | Congrats! You're the star of the show! You've made it to a league, the size of which is to be determined. We want you to have the best experience possible. We want you to have fun and be the best version of you that you can be. Thank you for joining our stream. 22 | 23 | All we ask is that you be able to join a Zoom call. We'd like you to be on a webcam, using a wired mic (stock Apple EarPods are sufficient), and able to share your screen if you intend to present anything or live code. 24 | 25 | That's it! Join us and share your knowledge and experience. 26 | 27 | If you're a regular guest you might want to consider acquiring equipment that we suggest in the [Streamers Guide](streamers-guide.md) 28 | 29 | ### Producers 30 | 31 | "Producers" are the term for the folks that are managing the channel during the show. There are many ways to interact with the audience, including chat, that are available to the Producers to provide a great experience. 32 | 33 | TODO: Document extensions that are added to broadcast (Streamlabs integrations) 34 | 35 | One of the more important things is making sure the stream is adhering to community guidelines and make the experience fun and enjoyable for everyone on the stream. 36 | 37 | #### Community Guidelines 38 | 39 | * [Twitch Community Guidelines](https://www.twitch.tv/p/legal/community-guidelines/) 40 | * [YouTube Policies and Safety](https://www.youtube.com/about/policies/#community-guidelines) 41 | * [FaceBook Community Standards](https://www.facebook.com/communitystandards/) 42 | * [Twitter Rules and policies](https://help.twitter.com/en/rules-and-policies#twitter-rules) 43 | Summary: Be excellent to everyone. 44 | 45 | Producers are also the ones making sure we adhere to the [Rules for Streaming](#rules-for-streaming) 46 | 47 | ### Streamers 48 | 49 | Streamers are the ones that mux everything together out to the internet. Streamers are the folks that are responsible for getting everyone that's joined a Zoom call, adding in any customizations via [OBS](http://obsproject.com/), and streaming that feed out to the internet. 50 | 51 | Streamers are the folks that will be the ones making sure the content lands on Twitch/YouTube/Facebook/Twitter/etc. 52 | 53 | There are some requirements though for streaming that are best-maintained separate from this README.md in the [**Streamers Guide**](streamers-guide.md). 54 | 55 | #### Bot Commands 56 | 57 | There are various bot commands (or as Restream calls them, "Reply commands") that are available for use during live streams. These commands can be used to drive people to useful assets, sites, previous episodes, etc. 58 | 59 | Refer to the Restream Chat settings to see all the available Reply Commands. 60 | 61 | ## Rules for Streaming 62 | 63 | Fun and natural but professional is the goal. The channel is not marked as mature on any platform so please be cognizant of language and environment. 64 | 65 | * Read the [Community Guidelines](#community-guidelines) because they are very different than what you might think (like [Music](https://www.twitch.tv/p/legal/community-guidelines/music/)) 66 | * Please contribute to the docs and assets: https://github.com/cloud-platforms-streaming 67 | * Don't get into open source drama/politics/etc. (Example: Chris Short will not be talking about behind the scenes CNCF goings-on) 68 | * Don't knock competing projects and products (we all know this but, let's continue to stay above board here). 69 | 70 | ## Streaming Calendar 71 | 72 | We maintain an externally facing Google Calendar that can be shared freely and subscribed to at: https://red.ht/streamcal 73 | 74 | This calendar is managed by Red Hat Livestreaming Executive Producers, Producers, and those involved with marketing events in the calendar. No other individuals should be granted access as this is a public facing asset for the business. 75 | 76 | Executive Producers will be able to "Make changes and manage sharing" while Producers will have their permissions set to "Make changes to events" so that better security controls are in place on this resource. 77 | 78 | ### Adding events as a non-Producer 79 | 80 | If you are a regular host and are booking shows, be sure to add redhatstreaming AT gmail to your invite. It might also be prudent to add your producer. 81 | 82 | ### Show changes/problems, calendar conflicts and show prioritization 83 | 84 | As part of the Executive Producer’s responsibilities, they will need to maintain the calendar with up to date information as part of this they will need to resolve any conflicts, prioritize content, and determine what goes on the air. At times, the Executive Producer will need to balance organizational needs vs channel needs. Producers generally have rights to the public streaming calendar, however, those rights can be revoked without notice in cases of abuse/misuse/etc. 85 | 86 | In the case of a previously scheduled show, any time/date changes need to be shared with at least one Executive Producer 10 days prior to the originally scheduled date. All efforts will be made to accommodate the change but existing shows will have priority unless customers are involved. 87 | 88 | In the case of an emergency (presenter power outage, connectivity issues, etc.) on the day of a scheduled show, you will need to contact an Executive Producer as soon as possible to reschedule. Do not try to pull off heroics to get on a live stream. We can always apologize for the technical difficulties and reschedule. If there are issues with a streaming service itself, the show's producer will have to decide on the spot to postpone or continue. 89 | 90 | Shows involving outside or external guests/partners/customers will always take precedence over shows with only Red Hatters. 91 | 92 | ### Continuity Plan 93 | 94 | If you plan on being out for prescheduled shows please find a replacement for yourself early. Be sure they have the same invites you have, and definitely check-in with them the day before to make sure they realize what year it is. 95 | 96 | [Continuity Plan](https://github.com/cloud-platforms-streaming/streaming-docs/blob/master/continuity.md#continuity-plan) -------------------------------------------------------------------------------- /streamers-guide.md: -------------------------------------------------------------------------------- 1 | # Streaming Guide 2 | 3 | Streamers are the ones that mux everything together out to the internet. Streamers are the folks that are responsible for getting everyone that's joined a Zoom call, adding in any customizations via [OBS](http://obsproject.com/), and streaming that feed out to the internet. 4 | 5 | Streamers are the ones that will be making sure the content lands on Twitch/YouTube/Facebook/Twitter/etc. 6 | 7 | **Some requirements must be met to stream.** As such we have [a series of producers](continuity.md) to help cover the needs of the channel. 8 | 9 | ## Bandwidth 10 | 11 | If you have a lower end upload speed, streaming is possible but 720p and 1080p streams require at least 5 Mbps of upload bandwidth. Keep in mind, other things on your network contend for this bandwidth. Also, you'll be watching the stream too which takes additional bandwidth. It racks up fast so your mileage may vary. 12 | 13 | While we don't intend to stream in 4K, it's worth mentioning, the upload bandwidth requirements for broadcasting 4K video is 25 Mbps. 14 | 15 | ## Equipment 16 | 17 | Keep in mind; you can stream and participate with a wide variety of devices and hardware. What you have right now as someone who participates in meetings remotely regularly likely has good enough equipment to join in a stream. However, some regular streamers will probably be filling a [Guest](README.md#Guests) and/or [Producers](README.md#Producers) role as well. If you don't have enough compute and video power to pull this off, a two computer set up is suggested. 18 | 19 | ### Two computer set up 20 | 21 | Streamers will need to consider how they will both broadcast a stream while participating in it (either in one of the streaming platforms and/or Zoom). While this is possible with a powerful enough setup, many Streamers choose to use two computers; one to stream the OBS feed and the other to participate in the Zoom call and streaming platforms. 22 | 23 | #### Computer A 24 | 25 | Computer A will be the box from which you speak, present, etc. to the audience on the stream. You'll connect to Zoom with this computer and use the microphone and camera on this machine. You will likely have the chat(s) for the streaming platform(s) open here as well. 26 | 27 | #### Computer B 28 | 29 | Computer B will be the machine that runs [OBS](https://obsproject.com/) to broadcast the Zoom call to the streaming platform(s). This computer should be able to handle the demand of encoding video feeds and streaming them. For example, an 8th generation Intel i3 is the bare minimum platform being recommended. 30 | 31 | The good news is there are other people that have figured this out, so do not feel like you have to do it all yourself. If you have questions, ask away in an Issue or PR (or DM is fine too). 32 | 33 | ### Three device set up 34 | 35 | Building on the Two computer set up, you can also have a third computer that could be used as a remote client. This client device would be in charge of managing the system OBS is running on remotely. This reduces CPU usage on the computer being used to connect to Zoom so it those resources can be used to run demos from or do other screen sharing. 36 | 37 | This isn't a common use case, but it's possible and viable should you need it. 38 | 39 | ### Equipment suggestions 40 | 41 | With that in mind, if you're going to be a regular [Guest](README.md#Guests) or Streamer we've assembled a list of suggested equipment to help improve the experience for our viewers. 42 | 43 | For a tiered list of suggested equipment, see our [Streaming Equipment](pdf/streaming-equipment.pdf) guide. 44 | 45 | Twitch also has its own [Hardware Recommendations](https://www.twitch.tv/creatorcamp/en/setting-up-your-stream/hardware-recommendations/) if you'd like to compare options. 46 | 47 | There is a good presentation put together by the brand team that will help you make the most of your physical appearance. Ideally, you have a decent mic, good lighting, and are wearing Red Hat or neutrally colored clothing: [Webcam Video 48 | Best practices for presentations](https://docs.google.com/presentation/d/1xnW3hm-jDfwrqma-1j8vzmq4an1mJMk0Y2hQfUkKss4/edit#slide=id.g547716335e_0_260) (Red Hat only). 49 | 50 | TODO: open source this guide or some version of it 51 | 52 | ## OBS 53 | 54 | [OBS](https://obsproject.com/), short for Open Broadcaster Software, is an open source project designed to making streaming easier and more professional looking. OBS is the interface to streaming services like Twitch, YouTube, etc. There are a number of useful resources across the web to help you get up and running with OBS or one of its forks. We'll provide the best here along with specific configuration settings that are needed. 55 | 56 | All assets that are consumed by OBS for the stream are in the [**streaming-tools**](https://github.com/cloud-platforms-streaming/streaming-tools) repo 57 | 58 | ### OBS Quick References 59 | 60 | Note: For Fedora users, the RPMFusion OBS should be used as the Flatpak has some issues with the required plugins. 61 | 62 | * [OBS Forum Resources](https://obsproject.com/forum/resources/) 63 | * [General Performance And Encoding Issues](https://obsproject.com/wiki/General-Performance-and-Encoding-Issues) 64 | * [Streaming with Open Broadcaster in YouTube (LinkedIn Learning)](https://www.linkedin.com/learning/learning-video-live-streaming/streaming-with-open-broadcaster-in-youtube) 65 | * [GPU Overload Issues](https://obsproject.com/wiki/GPU-overload-issues) 66 | 67 | ### OBS Scene Creation 68 | 69 | #### Cropping 70 | 71 | Cropping inputs is something that you'll find yourself doing quite a bit of in OBS as you're building scenes. The "ALT crop" (Option key on Macs) is a great way to get a crop *just right*. When editing a source, hold the ALT (Option on Mac) key and grab any point in the frame to crop it to suit the scene. Once you have your crop just right, it's encouraged that you do a "Fit to Screen" (CTRL/CMD+F) to make sure the crop is the best you can make it. 72 | 73 | For those comfortable with photo editing, this might feel a little awkward, but the outcome is similar. You might notice a black box (letterboxing) around your object as you're positioning it. This is due to the resulting image not fitting the aspect ratio of the screen being streamed. Keeping crops at a 16:9 aspect ratio will help with black boxes. 74 | 75 | * [How To CROP, RESIZE And STRETCH In OBS Studio! Easy (YouTube)](https://youtu.be/qEKBaeTJfpc) 76 | 77 | ### OBS Settings (aka problems and how to fix them) 78 | 79 | #### (Linux) Browser Plugin 80 | 81 | In order to use various overlays and alerts on Twitch, a browser plugin is available. This plugin does not ship for Fedora and must be installed. Other operating systems already have a browser plugin packaged. For Fedora, simply follow the [binary release installation instructions](https://github.com/bazukas/obs-linuxbrowser#installing-binary-release). 82 | 83 | #### Video Settings 84 | 85 | **Broadcasting in 1080p at 30 fps** is the goal. To get that set up, Open Settings, Video. Then make sure the settings are for 1080p (1920x1080) and 30 fps. 86 | 87 | ![Settings -> Video](img/1080p-settings-video-resolution.png) 88 | 89 | #### x264 CPU Usage Preset 90 | 91 | If your on stream video is laggy, lagging significantly, or jittering tuning the x264 CPU Usage preset on your device might help. 92 | 93 | The bitrate should be set to 4500 Kbps due to the 1080p@30fps requirement. This bitrate is the amount of data you send when you stream. If you have an upload speed of less than 4500 Kbps, you should not be a [Streamer](https://github.com/cloud-platforms-streaming/streaming-docs#streamers). 94 | 95 | You should be using a setting of veryfast (but superfast or ultrafast might be necessary depending on your setup). The higher the setting the better performance. But, the lower the quality; there's a sacrifice. This is device-specific; testing is required. "The image may look a bit blockier or pixelated, but you will be able to retain your resolution/fps." 96 | 97 | There is also a worthwhile **Tune** option in the Output settings. If you're streaming content, configuring the x264 Tune option to `zerolatency` should help performance. 98 | 99 | ![Settings -> Output -> Streaming](img/settings-output-streaming.png) 100 | 101 | Reference: [Twitch Broadcasting Guidelines](https://stream.twitch.tv/encoding/) 102 | 103 | #### Sound Settings 104 | 105 | In general, sound quality is the most important part of a livestream. If the sound isn't pleasant and of high-quality, people tune out. Much like radio, silence is bad. When in doubt, talk about whatever plugins are being used by the person showing their screen or ask for some more color around a particular feature or setting. 106 | 107 | General OBS sound settings should be set to 48 kHz and Stereo. Some services support a full 5.1 surround sound experience but, unless you intend to use 5.1 channels of audio during your production, keep it in Stereo. 108 | 109 | ![Settings -> Audio](img/settings-audio.png) 110 | 111 | #### Error: `Encoding overloaded! Consider turning down the video settings of using a faster preset.` 112 | 113 | This is a common error usually related to the stress that video encoding is putting on the system. 114 | 115 | Downscaling the output resolutions to 720p is the biggest thing that can be done to fix this. This is a huge sacrifice to video quality though. 116 | 117 | Try to see if there are updated drivers available for your system. At the very least, reach out to @chris-short for help here because ***720p isn't good***. 118 | 119 | ![Settings -> Video](img/720p-settings-video-resolution.png) 120 | 121 | TODO: 122 | 123 | * Streaming key acquisition 124 | * Scenes and more assets (D. Russo helping with animations) 125 | * Add more resources, hints, and refined settings (almost done) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | --------------------------------------------------------------------------------