Linux编程经验分享

640?wx_fmt=png&wxfrom=5&wx_lazy=1 最近几个开发者问我怎么开始本身的直播,所以我在这里想你们展现我给他们的建议!-- Suz Hinton
本文导航◈ 软件 24% ◈ 硬件 47% ◈ 建议 54% ◈ 布告板 55% ◈ 聊天 59% ◈ 准备时间 69% ◈ 按期直播 72% ◈ 紧张心理 77% ◈ 

去年 7 月我进行了第一次直播。不像大多数人那样在 Twitch 上进行游戏直播,我想直播的内容是我利用我的时间进行的开源工做。我对 NodeJS 硬件库有必定的研究(其中大部分是靠我自学的)。考虑到我已经在 Twitch 上有了一个直播间,为何再也不建一个更小更专业的直播间,好比 由 JavaScript 驱动的硬件JavaScript powered hardware ;) 我注册了 我本身的频道[1] ,从那之后我就开始按期直播。git

我固然不是第一个这么作的人。Handmade Hero[2] 是我最先看到的几个在线直播编程的程序员之一。很快这种直播方式被 Vlambeer 发扬光大,他在 Twitch 的 Nuclear Throne live[3]直播间进行直播。我对 Vlambeer 尤为着迷。程序员

个人朋友 Nolan Lawson[4] 让我 真正开始作 这件事,而不仅是单纯地 想要作 。我看了他 在周末直播开源工做[5] ,作得棒极了。他解释了他当时作的每一件事。是的,每一件事,包括回复 GitHub 上的 问题issues ,鉴别 bug ,在 分支branches 中调试程序,你知道的。这令我着迷,由于 Nolan 使他的开源库获得了普遍的使用。他的开源生活和个人彻底不同。编程

你甚至能够看到我在他视频下的评论:vim

640?wx_fmt=png

我大约在一周或更久以后建好了本身的 Twitch 频道,并摸清了 OBS 的使用方法,随后开始了本身的直播。我当时用的是 Avrgirl-Arduino[6] ,如今我依然常常用它直播。第一次直播十分粗糙。我前一天晚上排练得很晚,但直播时我依然很紧张。api

那个星期六我极少的几个听众给了我很大的鼓舞,所以我坚持了下去。如今我有了超过一千个听众,他们中的一些人造成了一个可爱的小团体,他们会按期观看个人直播,我称呼他们为 “noopkat 家庭” 。浏览器

咱们很开心。我想称呼这个即时编程部分为“多玩家在线组队编程”。我真的被他们每一个人的热情和才能触动了。一次,一个团体成员指出个人 Arduino 开发板不能随同个人软件工做,由于板子上的芯片丢了。这真是最有趣的时刻之一。网络

我常常暂停直播,检查个人收件箱,看看有没有人对我说起过但没有时间完成的工做发起 拉取请求pull request 。感谢我 Twitch 社区对个人帮助和鼓励。编辑器

我很想聊聊 Twitch 直播给我带来的好处,但它的内容太多了,我应该会在我下一篇博客里介绍。我在这里想要分享的,是我学习的关于如何本身实现直播编程的课程。最近几个开发者问我怎么开始本身的直播,所以我在这里想你们展现我给他们的建议!工具

首先,我在这里贴出一个给过我很大帮助的教程 “Streaming and Finding Success on Twitch”[7] 。它专一于 Twitch 与游戏直播,但也有不少和咱们要作的东西相关的部分。我建议首先阅读这个教程,而后再考虑一些创建直播频道的细节(好比如何选择设备和软件)。oop

下面我列出我本身的配置。这些配置是从我屡次的错误经验中总结出来的,其中要感谢个人直播同行的智慧与建议。(对,大家知道就是大家!)

软件

有不少免费的直播软件。我用的是 Open Broadcaster Software (OBS)[8] 。它适用于大多数的平台。我以为它十分直观且易于入门,但掌握其余的进阶功能则须要一段时间的学习。学好它你会得到不少好处!这是今天我直播时 OBS 的桌面截图(题图)。

你直播时须要在不用的“场景scenes”中进行切换。一个“场景”是多个“素材sources”经过堆叠和组合产生的集合。一个“素材”能够是照相机、麦克风、你的桌面、网页、动态文本、图片等等。 OBS 是一个很强大的软件。

最上方的桌面场景是我编程的环境,我直播的时候主要停留在这里。我使用 iTerm 和 vim ,同时打开一个能够切换的浏览器窗口来查阅文献或在 GitHub 上分类检索资料。

底部的黑色长方形是个人网络摄像头,人们能够经过这种更我的化的链接方式来观看我工做。

个人场景中有一些“标签”,不少都与状态或者顶栏信息有关。顶栏只是添加了个性化信息,它在直播时是一个很好的连续性素材。这是我在 GIMP[9] 里制做的图片,在你的场景里它会做为一个素材来加载。一些标签是从文本文件里添加的动态内容(例如最新粉丝)。另外一个标签是一个 custom one I made[10] ,它能够展现我直播的房间的动态温度与湿度。

我还在个人场景里设置了“闹钟”,当有人粉了我或者给了打赏,它会显示在最前方。我使用 Stream Labs[11] 网络服务来实现它,将它做为一个浏览器网页素材引进个人场景。 Stream Labs 也会在顶栏里给出我最新粉丝的动态信息。

我直播的时候,也会使用一个备用场景:

640?wx_fmt=png

当我输入密码和 API keys 的时候,我另外须要一个场景。它会在网络摄像头里展现我,可是将个人桌面用一个娱乐页面隐藏起来,这样我能够作一些私密的工做:

640?wx_fmt=png

正如你看到的,我直播的时候没有把窗口填的太满,但我让个人观众尽量多地看到个人内容。

但如今有一个现实的秘密:我使用 OBS 来安排我屏幕的底部和右侧,同时视频保持了 Twitch 要求的长宽比。这让我有了空间在底部查看个人事件(订阅数等),同时在右侧观看和回复个人频道聊天室。 Twitch 容许新窗口“弹出”聊天室,这颇有用。

这是我完整的桌面看起来的样子:

640?wx_fmt=png

我几个月前开始作这个,尚未回顾过。我甚至不肯定个人观众们有没有意识到我进行的这些精心的设置。我想他们可能会把“我能够看到每一个东西”视做理所应当,而事实上我经常忙于敲代码,而看不到正在直播的东西!

你可能想知道为何我只用一个显示器。这是由于两个显示器在我直播的时候太难以管理了。我很快意识到这一点,而且恢复了单屏。

硬件

我从使用便宜的器材开始,当我意识到我会长期坚持直播以后,才将它们逐渐换成更好的。开始的时候尽可能使用你现有的器材,即便是只用电脑内置的摄像头与麦克风。

如今我使用 Logitech Pro C920 网络摄像头,和一个固定有支架的 Blue Yeti 麦克风。花费是值得的。我直播的质量彻底不一样了。

我使用大屏显示器(27"),由于我以前说的,使用两个屏幕对我来讲不方便。我经常错过聊天,由于我常常不检查个人第二屏幕。你可能以为使用两个屏幕很方便,但对我来讲,把全部东西放在一个屏幕上有利于我对全部事情保持注意力。

这基本上就是硬件部分的大部份内容了。我没有使用复杂的设置。

若是你感兴趣,个人桌面看起来不错,除了刺眼的麦克风:

640?wx_fmt=jpeg

建议

最后这里有一些我经过实践得出的通常性建议,这使个人直播从总体来看变得更好,更有趣。

布告板

花点时间创建一个好的布告版。布告板是位于每一个人频道底部的小内容框。我把它们看做新的我的空间窗口(真的)。理想的布告板能够有相似于聊天规则,有关直播内容的信息,你使用的电脑和设备,你最喜欢的猫的种类,等等这样的东西。任何关于我的形象的内容均可以。咱们能够看看其余人(尤为是热播播主)的理想的布告板是什么样的!

一个个人布告板的例子:

640?wx_fmt=png

聊天

聊天真的很重要。你可能会被中途观看你直播的人一遍又一遍地问一样的问题,若是能够像现实生活中那样聊天那样会很方便。“你正在作什么?”是我敲代码的时候别人最常问个人问题。我用 Nightbot[12] 设置了一个聊天快捷命令。当你输入一些像 whatamidoing(我正在作什么) 这样的单词时,会自动给出我事先设好的解释。

当人们问问题或者给出一些有趣的评论时,要回复他们!和他们说谢谢,说他们的 Twitch 用的很好,他们会感谢你的关心和承认。一开始的时候很难对这些都保持注意力,但你作得多了以后,你会发现同时作这几件事变得更容易了。尝试着每两分钟就花几秒去关注聊天室。

当你编程的时候,解释你正在作的事 。多说点。开开玩笑。即便我碰到了麻烦,我也会说:“哦,糟糕,我忘了这个方法怎么用了,我 Google 一下看看”。人们通常都很友好,有时他们还会和你一块儿寻找解决的办法。这颇有趣,让人们一直看着你。

若是播主一直安静地坐在那敲代码,不去聊天,也无论他新粉丝的信息,我会很快对他失去兴趣。

极可能你 99% 的观众都很友好,而且都有好奇心。我偶尔仍是会碰到挑衅的人,但 Twitch 提供的检查工具能够有效避免这种状况。

准备时间

尽可能将你的配置“自动化”。个人终端是 iTerm ,它可让你保存窗口排列和字体大小的配置,这样你之后就能够再现这些配置。我有一个直播时的配置和一个不直播时的配置,这很是省事。我输入一个命令,全部东西就都在合适的位置并保持最完美的尺寸,并可使用了。

还有其余的应用能够用来自动化你的窗口位置,看看有没有对你有用的。

让你的字体在终端和编辑器中尽量的大,这样全部人都能看清。

按期直播

让你的日程表更有规律。我一周只直播一次,但老是在同一时间。若是你临时有事不能在你日常直播的时间直播,要让人们知道。这让我保持了一些固定观众。一些人喜欢固定的时间,这就像和朋友在一块儿同样。你和你的社区在一个社交圈子里,因此要像对待朋友同样对待他们。

我想要提升我更新直播的频率,但我知道由于旅游的缘故我不能适应超过一周一次的直播频率。我正在尝试找到一种可让我在路上也能高质量地直播的方法。或许能够临时将我聊天和写代码的过程保存起来,周末直播的时候再放出来。我仍然在探索这些办法!

紧张心理

当你即将开始的时候,你会感受很奇怪,不适应。你会在人们看着你写代码的时候感到紧张。这很正常!尽管我以前有过公共演说的经历,我一开始的时候仍是感到陌生而不适应。我感受我无处可藏,这令我惧怕。我想:“你们可能都以为个人代码很糟糕,我是一个糟糕的开发者。”这是一个困扰了我 整个职业生涯 的想法,对我来讲不新鲜了。我知道带着这些想法,我不能在发布到 GitHub 以前仔细地再检查一遍代码,而这样作更有利于我保持我做为开发者的声誉。

我从 Twitch 直播中发现了不少关于我代码风格的东西。我知道个人风格绝对是“先让它跑起来,而后再考虑可读性,而后再考虑运行速度”。我再也不在前一天晚上提早排练好直播的内容(一开始的3、四次直播我都是这么作的),因此我在 Twitch 上写的代码是至关粗糙的,我还得保证它们运行起来没问题。当我不看别人的聊天和讨论的时候,我能够写出我最好的代码,这样是没问题的。但我总会忘记我使用过无数遍的方法的名字,并且每次直播的时候都会犯“愚蠢的”错误。通常来讲,这不是一个让你能达到你最好状态的生产环境。

个人 Twitch 社区历来不会由于这个苛求我,反而是他们帮了我不少。他们理解我正同时作着几件事,并且真的给了不少务实的意见和建议。有时是他们帮我找到了解决方法,有时是我要向他们解释为何他们的建议不适合解决这个问题。这真的很像通常意义的组队编程!

我想这种“无论重要不重要,什么都说”的状况对于直播这种媒介来讲是一种优点,而不是劣势。它让我想的更多。理解一个观念很重要,那就是没有完美的程序员,也没有完美的代码。对于一个新手程序员来讲这是使人耳目一新的经历,对我这个老手来讲倒是微不足道的。

总结

若是你想过在 Twitch 上直播,我但愿你试一下!若是你想知道怎么迈出第一步,我但愿这篇博客能够帮的到你。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------