Skip to content

scaret/ycy-wishing-machine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

杨超越杯编程大赛第45号作品——杨超越许愿咕咕机

太长不看的朋友们可以直接去 https://ycy.dev 体验。

体验后记得去我的B站视频 https://www.bilibili.com/video/av49364693 下素质三连哦!

应用介绍

灵感来自于超越的幸运A体质。通过向超越许愿的形式来分享超越的幸运值。 该项目通过网络摄像头直播一个放在PO主家的打印机。你可以通过H5页面向打印机发送许愿内容。许愿内容会通过网页直播实时传回,并被全世界看到。许愿纸攒到一定程度会寄给超越。

线上环境

因为是个人项目,也不好意思用公司机器,于是蹭了AWS Free Tier,使用了AWS日本的Ubuntu 16.04,micro类型的实例。

基本上服务器只是起到托管页面的作用,由于嫌备案麻烦而放在日本,还比较慢。其他设置如下:

  • nginx/1.10.3
  • node.js/10.15.3
  • pm2 3.5.0
  • express/4.16.4

域名是花650块重金从Google买的。证书是免费的LetEncrypt证书。咕咕机是去年买的在家吃灰了一年翻出来的。

实时音视频技术用的当然是Agora WebRTC SDK啦。主播端和观众端都使用的是Web。

WebRTC主播端

主播端比较简单,就是一个发送端网页。获取摄像头权限后发动到指定频道即可。

为了兼容不同设备的观众端的Codec,所以主播端发送H264、VP8两路视频。两路视频都是720P的设置。

之后我额外做了混音功能,在频道内不间断地播放【卡路里之歌】。

WebRTC观众端

观众端首先会侦测当前环境支持的视频编码格式。 由于安卓设备的H264实现比较不一致,在这里是VP8优先,在不支持VP8的环境中Fallback到H264视频编码。

在Chrome、Safari浏览器中,有一个叫做【自动播放策略】的东西。简单地说,浏览器会阻止媒体自动播放声音。 解决的方法也很简单,在播放之前额外设置了一个确认框,引导用于点击确认时,允许视频的播放。

iOS的微信也支持WebRTC了!真是普天同庆。

其他的一些零碎

还有一些零零碎碎的工作,包括:

  • 分享页面的优化
  • 在线人数统计
  • 连接咕咕机打印
  • 打印太多导致纸张翻车,需要时常捋一捋

相对来说这个应用还是蛮简单的。

希望大家给我点赞!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published