Sochi。Camera:总体上完全从头开始创建项目的功能,而无需实施标准和示例

Sochi.Camera-一个站点,它广播来自Sochi及其周围地区安装的300多个网络摄像机的流。 该网站和整个服务都是非营利性的,由本地互联网提供商“ Business Connection”自费创建和维护了将近10年。 在这篇文章中,我们将介绍如何从绝对零开始编码。 关于与YouTube的战斗(我们获胜); 为什么免费软件不好,免费视频流服务好呢? 也许在将来,当他们向我们提出下一个建议时-写出100-200,000卢布。 相机,而不是一千个字,我们将为 Rafael提供指向此帖子的链接,以便所有人都能立即了解。

第一个版本:带有他人代码的残缺的设计

我们的项目是从头开始的,没有类似的服务,角色模型或模板。 我们所做的一切,我们都必须自己做:从重写开源库中的错误模块到发明安装相机的新方法。 没有现成的解决方案,当我们开始该项目时,现在它们也不是模板形式的,无论如何都需要相当不错的编程技能。

我们从专职网络管理员开始,他们知道如何编码。 从项目的第一步开始,我们几乎希望使我们的生活更轻松。 但是该网站的唯一“盗版”版本是第一个。 该设计是从桌面程序中借来的,用于查看照片和视频,其名字现在没人记得了。 实际上,该站点的最初想法是一个在线电影院,拥有许多大厅,背景为深色,大屏幕上显示的是高质量的图片。 该程序的设计名称被遗忘了-黑暗的背景,一堆预览,单击时将打开大屏幕。



该代码来自Linux DVR,这是开源的开源Linux DVR。 它作为站点工作,可以通过浏览器访问它并观看来自摄像机的流。 在Linux DVR的一段代码中(使用了Motion jpeg),我们从照片查看器程序中提取了该设计,并获得了Sochi的第一个版本。

现在,索契(Sochi)的第五版正在运行。 网站设计发生了很大变化。 但是,“黑暗电影院”的主要思想并没有消失,但是现在的设计更像Yandex视频,而不是桌面照片和视频库。 但是,这仅是遥远的提醒,而不是残缺的外观。 针对该网站的新版本宣布了在线竞赛 ,获奖者创建的总体设计和象形图用于该网站的当前版本。

图片

当然,并非所有站点用户都喜欢采用新外观;对于非常不满意的用户,还留下了旧版本,但是,现在几乎没有人访问它。

至于代码,第二个版本和其他版本是独立完成的,事实证明它们不是手工的。 现在,该服务是用Java脚本提供的,服务器部分是Node.js,客户端部分是Angular.js。 我们只有一个人开发服务器应用程序,但是他是一名专业开发人员,而今天我们的高水平服务主要是他的优点。 顺便说一下,我们的整个团队都列在Sochi。Camera项目的部分中。

从Flash切换到HTML5时的湍流

当史蒂夫·乔布斯(Steve Jobs)向Flash宣战时,我们的网站就开始使用它。 所有浏览器制造商都开始逐渐放弃HTML5,HTML5的视频流演示尚未标准化,因此出现了很多问题。 索契相机可以在Flash上​​使用数年,但是在新版本的浏览器中,一切都不稳定,我们失去了很多用户,因为他们没有从相机中获得视频,而是获得了一个黑暗的窗口。



有必要为新版本的浏览器重写网站,不仅必须为每个版本分别编写一段代码,而且还必须动态确定大量浏览器播放器。 在这里,我们的开发人员编写了这样的结构,以至于它做得非常成功。 当然,这非常麻烦并且使代码复杂化。 因此,当标准化情况解决后,我们再次重新设计了服务,消除了这些额外的困难。

我们开发人员的优势之一在于,他一直致力于重构-优化代码,减少服务器和通信通道上的负载,不断监视新版本编程语言的功能。

顺便说一下,与此同时,当我们在努力使用不同的浏览器格式时,YouTube正在解决一个类似的问题,但有两个小的区别:YouTube显示文件而不是流,这使程序员容易得多; 这是YouTube,拥有大量的程序员,而不是只有一个很小的公司,尽管它是一个非常优秀甚至精明的程序员。 现在来看这些过去的事情,我们可以说动荡已经过去了。

除了我们的主要程序员对软件有效性采取的正确方法之外,另一个非常重要的方面是选择新的流媒体平台。 尽管我们离开Wowza并不是出于“技术原因”,但是由于其不适当的关税政策,从长远来看,从技术上讲我们还是赢了。 大约4年前,我们还未开始与Erlivideo的Flussonic合作开发第四版。 然后,该产品从半手工艺品开源转变为正常的付费商业广告。

该产品的历史可以通过以下事实得到很好的证实:软件产品的开发不是沿着带有免费(或共享软件)分发的开源软件的道路,而是沿着商业道路进行的。

在我们打算改用Flussonic时,它已经存在了大约三年。 最初,他拥有免费分发的开源代码,而程序员只有靠他的支持才能赚钱。 它的开发是不稳定的,因为用户没有报告错误,第三方开发人员参与该项目的开发并不有趣,获得支持的资金很少。 然后,决定关闭代码,创建Erlivideo公司并开始开发商业产品。 在公司成立后的一年中,我们开始与他们合作。

我们是它们的试验场,实验基地,我们与他们共享问题,提供功能。 我们从他们那里获得的重要信息之一是专门为他们的引擎编写的播放器。 重要的一点是,这两个部分(内核和客户端)都是由同一开发人员编写的,即使出现问题,也可以很快地将其修复。 在这段时间里, Erlivideo取得了长足的发展,在IPTV行业中广为人知,现在在我们的第五版中,所有功能都稳定运行了一年多,没有出现任何故障。

金钱:花什么以及如何赚钱

经过多年的努力,该站点已变得非常著名,受欢迎,本身已成为此类资源的模型。 我们会定期与我们联系以购买完整的解决方案。 考虑到我们的经验和所犯的错误,我们现在想出了这个决定会给我们带来什么损失。 通常,服务器部分约为1000000卢布,每个移动应用程序为50万至60万卢布。 这些潜在的买家数量令人恐惧,他们希望所有物品的最高购买额为100,000-200,000卢布。 当我们开始绘制软件的组件,某些解决方案的成本时,人们感到困惑:例如,为什么要花钱在开源库中编写免费的类似物来编写模块。 是的,只是为了让他们更好地工作!

图片

这是一个简单的示例,即从摄像机获取流并将其分发给大量订户,仅需对其进行乘以而不进行更改即可。 对于来自开源ffmpeg库的免费解决方案,当来自源的流中断时,整个过程将停止,必须手动重新启动。 想象一下,网络上有三百多台摄像机,一个相当大的网络,不断发生的事情-摄像机上某处电源将发生故障,服务器与摄像机之间的某处,连接将断开,服务只会停止。 与使用免费解决方案相比,可以使用付费解决方案付费的解决方案要容易一些,该解决方案可以监视情况并在必要时重新启动,而使用手动解决方案则更容易。

通常,根据我们的估计,开发软件的成本约占所有项目成本的40%。 剩余的60%是所有硬件,包括相机和服务器,以及二手第三方应用程序的许可证。

我们在这个项目上花了很多钱,总的来说,现在我们不会拒绝以某种方式赚钱。 但这绝对不是直接的,“在额头上”的货币化途径。 在研究了大多数货币化模型之后,很明显,那些直接从中获利的服务需要额外的麻烦,而且通常不会获得回报。 现在,有一些技术解决方案可以轻松地将广告直接集成到视频流中。 从技术上讲,这是一个很好的解决方案,服务器上的负载很低,不可能绕开广告拦截器,因为我们有500,000-600,000的观众,每个月都会有大量观众观看此视频广告,但是围绕它建立销售系统和管理现金流非常昂贵,并且我们不打算进行此类获利。

因此,我们使用间接模型,主要是为了促进我们的核心运营商业务。 例如,进入网站时,我们会分析访问者的IP地址,然后向本地居民而非客户展示我们自己的服务广告。 我们提供流以显示在第三方Web资源上,以换取与他们的广告。 在本地电视频道上,他们愿意在我们公司的黄金时段新闻块中使用我们摄像机的视频。 我们的客户连锁酒店在电视上播放摄像机拍摄的视频流,并将其作为电视频道接收,对他们来说,这是一项额外的免费服务,是客人的筹码。

该网站本身每月有近500万的浏览量,我们将其用作广告平台,但我们不出售广告-我们只免费提供我们自己的客户或合法客户,我们只是在增加忠诚度。

将来,我们计划遵循相同的战略方针-间接营利方法,为访客提供免费服务。

我们期待您对下一篇文章的提问,评论,意见和建议。

Source: https://habr.com/ru/post/zh-CN413929/


All Articles