点击上方蓝字关注“汪宇杰博客”

导语
程序员鼓励猫对我们编程有很大帮助。而程序员不在家的时候,如何远程吸猫,并且让朋友们一起吸呢?有了Azure的话,这个问题就迎刃而解了!
摄像头
硬件上,我们只需要一个普通USB摄像头即可。推荐使用带自动对焦,1080p以上分辨率的摄像头。摄像头的图像传感器用IMX317或者415都行,我自己购买的是415传感器的4K摄像头,这个一般是做监控用的,颜色不是很饱满,但是清晰度很高。

将摄像头接到电脑上,对准猫就行了,不过得注意不要让猫碰掉摄像头。
OBS软件
我推荐使用OBS Studio,这是一款免费,但十分专业的视频直播软件,基本上点点鼠标就设置好了,符合.NET及Azure程序员不加班的一贯风格。但是,如果你喜欢敲命令996,不喜欢点鼠标这种没有技术含量的,那么用ffmpeg也可以作为直播软件。
启动OBS后,在Sources里添加摄像头。部分摄像头支持手工调节焦距等参数,可以双击添加完的设备名称进行设置。

现在OBS还没有直播地址,我们马上就要用Azure创建一个直播服务器给OBS用。
Azure 就应该用出云该有的样子,有现成服务能搞定的,绝对不要建 VM 去搞。对于直播这个需求,Azure的 Media Service 就能完美解决。
进入 Azure Portal,点击 + Create a resource,搜索 Media Services,点击 Create。

选择你的订阅和资源组,指定一个 Media Services account name,这个不能和其他人的重复,另外选择或创建一个存储账户,然后点击 Review + Create,完成创建。

创建成功后,点击 Go to resource

进入 Live streaming 菜单,点击 + Add live event (new)

输入 Live event name,例如 catlive。Static hostname prefix 建议选择固定的,如 Use live event name 或者 custom name,这样的话直播地址不会变,防止每次开启直播都要重新配置客户端播放器。Start live event 选为 Yes。最后点击 Create,完成直播频道创建。

点击进入 catlive

复制 Input URL

回到OBS,在 Settings - Stream 里粘贴刚才复制的URL到 Server 地址。Stream Key 需要自己指定一个,例如996。

配置完成后,点击 Start Streaming。此时OBS就会把摄像头的实时画面发送到 Azure Media Service。

此时,Azure 里应该能看到直播画面预览。然后点击 + Create an output。

根据自己需要设置 output 的参数,此处我留默认。然后启动 output。

选择默认的 Streaming endpoint

点击 Start streaming endpoint

启动后就可以看到实时直播画面了。

最后,复制下面的 Streaming URL,这就是要发给观众的直播链接。至此,Azure部分配置完毕。

而观众只需要一个支持RTMP协议的播放器,例如VLC,就可以观看直播。
打开VLC,点击 Media – Open Network Stream。在Network 里粘贴之前复制的 Streaming URL,即可观看直播。

国际版Azure尽管很香,但国内访问速度是个问题,尤其是中国电信的网络,由于国际出口人均带宽小,每天晚上几乎是无法看直播的,所以我们需要一个国内的方案。而任何好东西,到了中国,都会有特色,中国版Azure尽管也有Media Service服务,但个人账号并不允许创建Media Service,估计是为了防止有人开不和谐的直播。所以我们只能退而求其次,使用VM自己996架设直播服务器,我选用的是 Ubuntu 20.14 LTS 的VM镜像。

关于如何创建及连接Linux VM,可以参考微软官方文档,本文不多赘述。
https://docs.azure.cn/zh-cn/virtual-machines/linux/quick-create-portal
创建VM后,需要在防火墙中打开TCP 1935和8080端口,这是直播服务器的默认端口。

这年头,用Docker 是政治正确,不然就会被人鄙视没有技术含量。幸好,Docker Hub上有一个 alqutami/rtmp-hls 镜像,就可以用来架设RTMP直播服务器。

连接虚拟机后,安装Docker:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
sudo apt install docker-ce
如果你不想每次跑 docker 命令都要 sudo,那么可以:
sudo usermod -aG docker ${USER}
su - ${USER}
id -nG
然后运行:
docker run -d -p 1935:1935 -p 8080:8080 alqutami/rtmp-hls

直播服务器的地址格式为:
rtmp://你VM的域名或者IP:1935/live/自定义key
同样的,用OBS把摄像头画面发送到这个地址,即可开始直播。观众使用同样的地址就能在VLC等播放器里观看直播。

至于Azure Container Instance,经过测试,没能成功运行alqutami/rtmp-hls 的 docker 容器,因此放弃。
可以看到,在Azure国际版里搞猫咪直播,点点鼠标10分钟搞定,0基础,0代码,有钱人的云就是这么方便,丝毫没有加班的机会,可惜国内网络访问慢。而使用Azure国内版,需要手工安装服务器以及docker,具有一定复杂性,但速度很快,各有各的优势。

汪宇杰博客
Azure | .NET | 微软 MVP
无广告,不卖课,做纯粹的技术公众号
喜欢本篇内容请点个在看





