简单地制作一个全天候直播间
- 获取链接
- X
- 电子邮件
- 其他应用
简单地制作一个全天候直播间
全天候直播间的概念就是每天24小时不间断地向直播间推送流媒体,为网友推送的内容多数是单一的摄像头视角或者视频回放。由于信息密度低、本身没有实际意义,很难吸引新观众驻留。从个人角度来看,大多数全天候直播间运营者的目的仅是为了给网友提供一个观赏风景、在线文字聊天和直播间礼物回收的场所,以此来增加粉丝互动、扩充人气等。
几个典型的直播间案例《从空间站鸟瞰地球》、《实时世界各地风景》、《哔哩哔哩音悦台》
简介
这里先从技术实现手段讨论如何实现,最后才讨论直播内容的版权问题和法律问题。
基础设施
-
1个可以24小时开机并且联网的设备,比如:专业服务器、家用电脑、树莓派。
-
必要的软件:直播姬、OBS Studio、FFMPEG、操作系统等软件。
-
网络带宽:1080P直播至少要2Mbps以上的上行带宽
-
显卡和处理器:在需要实时转码的情况下必须要独立显卡才能达到足够快的转码速度。如果不对视频重新编码而只是简单地做拷贝处理,这样单核虚拟CPU也能轻松完成。
组合方案
终端方案:Linux服务器+FFMPEG的流量转发方案,对计算资源消耗极少,仅考虑带宽上限。
桌面方案:直播姬/OBS Studio+Windows/Linux桌面系统,对计算资源消耗最多,同时考虑带宽上限。
实施细则
终端方案:这里以使用Ubuntu Server Linux为例作为服务器操作系统。服务器可以自行采购也可以使用廉价的云服务器,比如亚马逊 Amazon Lightsail 当中最便宜的一款服务器,1核心处理器和 512MB 内存,包含了不限制带宽的1000GB网络传输流量。
此时,视频和音频处理和流量的推送任务交给软件 FFMPEG 来处理,FFMPEG是一个高速的音视频处理软件,安装方法可以参考FAQ:https://ift.tt/2RtVauF
视频来源可以是个人电脑上的摄像机、本地MP4,也可以是网络上的流媒体服务器,这里暂不讨论内容来源。
桌面方案:对于普通用户来说,Windows PC上使用直播姬和OBS Studio是最学习成本最低和廉价的直播方案,只要保证电脑开机以及直播间开关打开就能24小时不间断直播。如果要转播其他网站上的内容,可以使用OBS Studio中的“浏览器嵌入”功能,轻松地将其他网站页面嵌入到直播窗口中。与此同时,OBS Studio也有许多简单易用的直播间插件可供开箱使用。
OBS Studio 下载地址:https://obsproject.com
BILIBILI 直播姬 下载地址:https://live.bilibili.com/liveHime
常用技巧介绍
终端技巧:要在 Linux 服务器上开直播和转播服务,我们可能会用到 ffmpeg、youtube-dl、streamlink 这几个核心软件。ffmpeg用作音视频的编码和转码推送,youtube-dl 是一个功能强大的 Youtube 视频下载软件,streamlink 可以从常见的流媒体网站抓取视频直播和点播内容。
-
使用 youtube-dl 下载视频的命令:youtube-dl -f best jNQXAC9IVRw
这个命令使用 -f best 参数寻找最佳画质,jNQXAC9IVRw 作为视频的番号告诉 youtube-dl 你想要下载哪个视频。
-
使用 streamlink 播放视频的命令:streamlink $URL best
这个命令中 best 参数告诉了你想寻找最佳画质的资源, $URL 作为视频的播放地址告诉 streamlink 你想要播放哪个网页上的视频。如果你的电脑上安装了ffplay、ffmpeg等软件,还可以使用 --player=ffplay 指定你要使用哪个播放器播放,这里就用 ffplay 播放器。
-
使用 ffmpeg 推流的命令:cat example.mp4 | ffmpeg -re -i pipe:0 -c:v copy -c:a aac -f flv $RTMP
简要:这个命令将告诉 cat 程序从你想要播放的视频文件中读取数据,| 符号表示创建一个从 cat 程序到 ffmpeg 程序的数据管道,将视频源源不断地传输过去。之后的参数中,-i pipe:0 参数告诉 ffmpeg 要从数据管道中读取数据。
-re 参数:表示告诉 ffmpeg 要按照视频正常播放的帧数来处理。
-i 参数:表示告诉 ffmpeg 要从什么地方读取媒体流数据。这里,pipe:0 是从管道读取数据,pipe:1 是向管道写入数据。
-c 参数:告诉 ffmpeg 编码方案。这里的 -c copy 表示完全拷贝,如果使用 -c:v copy -c:a aac ,则表示只拷贝视频,而音频使用 aac 格式重新编码。
-f 参数:表示文件的输入输出位置。这里的 -f flv 表示输出为 flv 格式,$RTMP 表示推流到BILIBILI直播网站的地址,这里就替换成完整的直播间 RTMP 推流地址。
行为举例:从其他网站转播到BILIBILI。
-
从 Youtube 转播到 BILIBILI:youtube-dl -f best $URL -o - | ffmpeg -re -i pipe:0 -c:v copy -c:a aac -f flv $RTMP
这是一个简单的转播案例,使用UNIX的通信管道,简单地将 youtube-dl 下载的媒体流转发给 ffmpeg,此时 ffmpeg 只做简单的音频转码和格式处理就把媒体流发送到BILIBILI直播间的RTMP推流地址上。由于行为十分简单,计算机资源占用极少。
-
从 Ustream 转播到 BILIBILI:streamlink $URL best -O | ffmpeg -re -i pipe:0 -c copy -f flv $RTMP
这是一个简单的转播案例,使用UNIX的通信管道,简单地将 streamlink 下载的媒体流转发给 ffmpeg,此时 ffmpeg 只做简单的镜像拷贝就把媒体流发送到BILIBILI直播间的RTMP推流地址上。同样由于行为十分简单,计算机资源占用极少。
-
从 Youtube 转播到任意RTMP服务器:youtube-dl -f best $URL -o - | ffmpeg -re -i pipe:0 -c:v copy -c:a aac -f flv $RTMP
这个例子和前面两个别无二致,只需要替换 $RTMP 地址即可。
法律问题
-
权利和义务:Youtube 上的多数视频受到 Standard Youtube License、CC 等协议保护的,所以转发视频之前请认清视频所有者是否允许转发,以及是否履行转发者的义务。
-
合法性:转发行为是否合法,取决于你所在的国家、地区、直播网站是否允许。中国大陆对新闻媒体有严格的管控,个人UP主不可以随便冒充媒体记者。
本文禁止转载或摘编
- 直播
- FFMPEG
- 转播
- Youtube
- 投诉或建议
Tags: published
November 07, 2019 at 02:06PM
Open in Evernote
评论
发表评论