随着流媒体应用的逐渐增多,实时编码技术吸引了大量的开发者投身其中。但是对于实时编码技术的上手,真的有那么简单吗?

作者 | Luke Garrigan

译者 | 谭开朗,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

实时编码

实时编码仍处于起步阶段,但随着越来越多杰出流媒体的涌现,它肯定会越来越受欢迎。实时编码可能永远不会像视频游戏流媒体那样大受欢迎,但那只是因为没有那么多的需求。这并不能说明实时编码行不通,仍有很多正式节目流媒体吸引了大量的观众!

我的故事

好几个月的时间,我几乎每天都看实时编码节目,终于在2018年7月,我决定自己动手试一下。

对于首次尝试,我没有真正的计划,甚至没有告诉家人和朋友。我只是一头扎进去,乐观地等待£1000募资的出现。

当时我正在为一个朋友开发Java后端,所以我想为什么不在我编码的时候做直播,一举两得。但我并没有吸引到很多观众,反而是和为数不多的现场观众一起开怀大笑。

动起来

我决定做个不一样的流媒体。我知道一款名为Processing的开源图形库,即使是零基础我也想作出尝试。我会写Java,所以很快也就将其学会了,最终做了一款随机游戏。看了流媒体的人也都加入了这款游戏。

这款游戏非常非常简单,但相对于我的其他流媒体,它吸引了相当多的浏览量。我才发现,人们喜欢屏幕上的动态事物。而只有达到一定的测试数量,观看者才会查看且感兴趣。

我在同一款游戏中添加了一些小功能,比如升级功能,在玩家离开游戏流时动态添加或删除玩家等。它吸引了一些观众,但没有上次那么多。

在这里我学到了非常重要的一课,但我已错过了。这是我放弃后几个月才明白的道理。

P5.js学起来

我想做一个可以和观众一起玩的游戏。我已通过Processing完成了一些开发工作,而逻辑要切换到p5, 它实际上就是浏览器的Processing(是JavaScript而非Java)。

这款游戏以行星为构思,但是一个多人游戏版本:

我对游戏开发毫无经验,所以只能在工作中不断学习。多人游戏开发需要用到Node和Socket.io,这也是我需要学习的。这款游戏的前两个流是我最喜欢的,也可能是最成功的。我设置了AWS Lightsail服务器,每次提交新代码都会重新部署,大家都可以和我一起玩或做测试。

我太缺乏经验了,以致不能确定客户端或服务器应该处理游戏的哪些部分。不久之后,有人开始侵入游戏并在屏幕上进行远程控制,一次发射了1000颗子弹。这是最好的实时编码,现场观看者十有八九是程序员,毫无疑问他们会觉得你很愚蠢(即使你希望他们不要这么认为)。

显然,大家喜欢看热闹,我最终也将流的标题更改为“来破解我的多人游戏吧”。

但最终,我的代码得到了优化,我开始知道服务器应该做什么,客户端应该做什么。因此,黑客的数量急剧下降,观看者的数量也随之大幅下降。

对这款游戏紧抓不放

我在开发这款游戏的过程中获得了很多乐趣,我不断给它添加功能,最终它从小行星游戏发展成为我自己的游戏《Spaceheir》!

目前还没有游戏的在线版,但这是我最新的gif。(现在看起来很不一样了,有了升级系统和电源)

每个流最终都与前一个流非常相似:收集想法并将其实现到游戏中,或者修复人们玩游戏时发现的bug。我认为,总是参照过去会让观众觉得单调乏味,也是收视率下降的原因之一。我被困其中,不知道该如何跨越。

像Daniel Shiffman这样的大型实时编码流媒体,他总是在做创新的事情,他从来没有一个庞杂的程序。Daniel的流媒体中都是大量的短代码挑战,人们能从头到尾看到东西的创建过程。我认为这非常重要,也是我喜欢他的流媒体的原因之一(以及他无与伦比的教学能力和性格)。

我喜欢观察他们解决问题,并且自省我对于解决该问题的想法。如果他们像我一样致力于一个大项目,能找到一个不需要先验知识的现有系统是很少见的。这意味着,如果他们从头开始,我可以立即进行比较,因为我不需要担心他们已经编写的一些现有代码。Daniel Shiffman很好地解决了这个问题。

反复无常

另一个主要问题是持之以恒,我要明确做流媒体的时间:每周三、周五和周日。而我只坚持执行了两次。在谷歌搜索“成为优秀流媒体的好用技巧”,得到的结果都有:持之以恒。而我没有坚持下来,我要去上班,有些下班还会很晚,嗯,我无法忍受。

组织性

因为我都在做着同样的事情,所以几乎每一个流项目我都没有做计划。我会直接开始,让观众看到我要做什么。现在,我知道这种做事方式是不对的,我应该计划好我想要做什么,即使是涉及到相同的游戏,至少我也应该对我想要完成的内容有一个清晰的愿景。

结论

约长达6个月的时间里,我进行了实时编码并从中获得了极大的乐趣。我遇到了很多才华横溢的人,并在过程中收获了快乐。不过最后,它变成了一件苦差事,我认为这体现在流本身的质量上。

我相信,我会在某个时间再回到这个话题上,并应用我所学到的经验。遗憾的是,我学到的很多关于实时编码的东西,都只变成了回顾而非工作。如果我学会了持之以恒,也许我会比忍者更强大。

原文:https://dev.to/lukegarrigan/why-i-failed-at-live-coding-1eie

本文为 CSDN 翻译,转载请注明来源出处。

【END】

Python的学习方式

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

 热 文 推 荐 

任正非:华为有意出售 5G 技术!

不识 Pandas,纵是老手也枉然?

告别写笔记,AI 实时转写黑科技来了!

☞2亿日活,日均千万级视频上传,快手推荐系统如何应对技术挑战?

☞Docker容器化部署Python应用

☞给面试官讲明白:一致性Hash的原理和实践

☞预警,CSW的50万枚尘封BTC即将重返市场?

☞她说:行!没事别嫁程序员!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

为什么我在实时编码时失败了?相关推荐

  1. 等待面试结果焦虑_在技​​术面试中进行实时编码时,您如何应对焦虑?

    等待面试结果焦虑 I received this question last week from a reader: 我上周从读者那里收到了这个问题: I've been a developer si ...

  2. obs自定义编码设置_通过7个步骤设置OBS进行实时编码

    obs自定义编码设置 by Wesley McCann 韦斯利·麦肯(Wesley McCann) 通过7个步骤设置OBS进行实时编码 (Setting up OBS for Live Coding ...

  3. AV1,实时编码READY

    点击上方"LiveVideoStack"关注我们 一款编码器的成功,不仅需要大量的金钱,还需要耐心.AV1定稿三年后,是时候为它庆祝了. 文 | 包研 不知不觉,距离AV1完成定稿 ...

  4. H264实时编码及NALU,RTP传输(ZZ)

    rfc3984 Standards Track [Page 2] RFC 3984 RTP Payload Format for H.264 Video February 2005 1. 按照RFC3 ...

  5. gt爵士变形步骤_编码广播:编码时您可以听24/7爵士节奏

    gt爵士变形步骤 阅读本文时,您可以继续阅读Code Radio. (You can go ahead and start listening to Code Radio while you read ...

  6. gt爵士变形步骤_代码广播简介:编码时您可以收听的24/7爵士节奏

    gt爵士变形步骤 阅读本文时,您可以继续阅读Code Radio. (You can go ahead and start listening to Code Radio while you read ...

  7. JPA 2.0 中的动态类型安全查询(如何通过 Criteria API 构建动态查询并减少运行时失败)...

    简介:  如果编译器能够对查询执行语法正确性检查,那么对于 Java 对象而言该查询就是类型安全的.Java™Persistence API (JPA) 的 2.0 版本引入了 Criteria AP ...

  8. 动力电池编码追溯系统_学习编码时如何保持动力(10条可行的技巧!)

    动力电池编码追溯系统 This post was originally published on Coder-Coder.com. 该帖子最初发布在Coder-Coder.com上 . Does th ...

  9. 用fstream打开含中文路径文件时失败的问题。

    最近写程序的时候遇到了使用ifstream打开含中文路径文件时失败的问题,在网上翻了一下,发现这是一个普遍遇到的问题,在很多人的博文中也都给出了一些解决技巧,但大多是转载的东西,很少对这个问题引发的原 ...

最新文章

  1. 他本科来自普通二本,读博后3年迎来2篇Nature,创造校史!
  2. 【云图】如何制作附近实体店的地图?-微信微博支付宝
  3. linux7.4 配置yum,Centos7.4重装yum
  4. android导航条高度修改,Android中修改TabLayout底部导航条Indicator长短的方法
  5. android studio编辑不了,无法在Android Studio中编辑文件
  6. js函数中参数的传递
  7. APPium-Xpath,swipe练习
  8. 并发事务正确性的准则 可串行化_从0到1理解数据库事务(上):并发问题与隔离级别...
  9. IDEA 配置 SpringBoot 启动端口
  10. 计算机毕业设计基于asp.net企业差旅管理系统
  11. 测试宝宝照片的软件,未来宝宝照片合成器
  12. 编译安装libmodbus库
  13. 计算机专业对于英语水平的要求,英语对计算机专业的重要性及如何提高英语水平...
  14. 2sum/3sum/ksum 问题
  15. 网易云团队前端单元测试技术方案总结,测试人员必备知识
  16. pip国内常用镜像源汇总
  17. python统计word页码_python 实现 Word Count
  18. Actionbar 溢出菜单背景色设置
  19. PAP和CHAP协议介绍
  20. 人脸识别,让会议签到更轻松!会议会展中的人脸识别签到!

热门文章

  1. windows 上安装 python3.7 和 pip 并配置虚拟环境
  2. 雷达数据处理及应用第三版 pdf_数字阵列雷达:零中频接收机的优缺点
  3. Lua笔记4 闭包、迭代器
  4. Flutter进阶—质感设计之持久底部面板
  5. Flutter进阶—质感设计之卡片
  6. 碳酸钡颗粒行业调研报告 - 市场现状分析与发展前景预测
  7. 中国接种环行业市场供需与战略研究报告
  8. php-china,php对chinapay的支持
  9. python秒表代码_斌哥教你自制千分秒表(键盘控制)
  10. 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧