无人直播系统开发实战(附源码)

本文介绍了无人直播系统的工作原理和实现方法,通过分析B站的直播设置,利用ffmpeg进行视频推流,实现24小时不间断直播。文章详细阐述了从需求分析到编码实现的全过程,并提供了Java后端代码示例,最后分享了如何部署到腾讯云服务器。
摘要由CSDN通过智能技术生成

无人直播系统



前言

你有看到过那种不间断型的、循环播放视频音乐的直播间吗?或者那种直播播放电影的直播间?还有层出不穷的文章,类似如下标题:

“如何搭建一个24小时不间断的直播间?躺入xxxx元!”
“24小时电影直播间,每天到账xxx~xxxx,不出镜副业,人人可做!”
“50块的云服务器直播推流让我月入过千?轻轻松松打造一个属于自己的被动收入”
“无人直播循环播放x个小时羊了个羊累计成交额xxxx元”

看到这些文章标题,是不是心动了?慢着,本文不是要写如何使用这些技术赚钱,而是探索这些赚钱的技术到底是啥原理、是怎么做到的。

二、术语

直播:打开直播软件,然后一个人对着摄像头,拿着麦克风,穿着超短裙,翩翩起舞,然后咱们开心的欣赏。

直播推流:一个人对着摄像头,拿着麦克风,穿着超短裙,翩翩起舞,并使用第三方软件将实时画面推到直播间,然后咱们开心的欣赏。

无人值守直播推流:提前把视频录制好,保存成文件,比如mp4,想要开播的时候,使用自研软件把这个mp4文件推给我们开心的欣赏。

以上有啥不同呢?简单来说,正常的直播:我们看直播的时候,主播正在跳;无人值守直播:我们看直播的时候,主播实际正在睡大觉。

三、需求

基于以上分析,我们开发一个软件,只要我们准备好要播出的视频:

想什么时间播就什么时间播;

想重复播放几遍就重复播放几遍;

直播的时候,我们可以去睡觉、撸啊撸、约会、上班…

四、分析

我们以B站为例,来分析该如何实现以上软件。

打开B站开播设置,我们注意下面红框中的说明,实际上可以将我们要开发的软件看做是“第三方软件”,红框中提到的服务器地址和推流码,就是我们要用到的参数。通俗的理解为,我们将准备好的视频数据,推到这个服务器地址,即可实现实时直播的能力。
在这里插入图片描述
我们点击“开始直播”,可以看到下图红框里的内容,即是我们需要的服务器地址和密码:

在这里插入图片描述
接下来该如何推流呢?轮到大名鼎鼎的ffmpeg上场了。这是一个功能强大的,可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,这个工具技术成分太高了,具体有多高,我估计得有三四层楼那么高。

所以,到目前为止,我们的直播推流实现步骤就确定了:

第一步、把视频提前制作好

第二步、安装ffmpeg软件

第三步、找到我们的推流服务器和秘钥

第四步、调用ffmpeg的功能,将视频推到直播间去

第五步、把冰箱门关上…,不是,欣赏一下我们的直播间

五、编码

以上的实现方案确定了,编码阶段是最简单的,咱们可以使用任何语言进行编码实现,甚至使用几条CMD命令或Shell命令都能实现。

接下来我使用Java实现,顺便做一个“友好的”配置界面:
在这里插入图片描述
页面代码就不贴了,下面是后端代码:

@RequestMapping("/live")
@ResponseBody
public Result<String> live(@RequestBody LiveConfig live){
    List<String> commands = new ArrayList<>();
    commands.add(ffmpegPath);
    commands.add("-re");
    commands.add("-stream_loop");
    commands.add(live.getLoop().toString());
    commands.add("-i");
    commands.add(baseDir+"/test.mp4");
    commands.add("-vcodec");
    commands.add("copy");
    commands.add("-acodec");
    commands.add("copy");
    commands.add("-f");
    commands.add("flv");
    commands.add(live.getUrl()+live.getSecret());
    logger.info(StringUtils.join(commands," "));
    ProcessBuilder builder = new ProcessBuilder();
    builder.redirectErrorStream(true);
    builder.command(commands);
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            InputStream inputStream = null;
            try {
                Process process = builder.start();
                inputStream = process.getInputStream();
                logger.info("开始推流");
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String line;
                while ((line = reader.readLine()) != null) {
                    logger.info(line);
                }
                int result=process.waitFor();
                logger.info("推流结果:{}",result);
            } catch (Exception e) {
                logger.info("推流失败:{}", ExceptionUtils.getStackTrace(e));
            }finally {
                if (inputStream != null){
                    try {
                        inputStream.close();
                    } catch (IOException e) {
 
                    }
                }
            }
        }
    });
    thread.start();
    return Result.success(null);
}

我的直播间就这样愉快的开播了:
在这里插入图片描述
六、部署
接下来部署到我的腾讯云,让我的无人值守直播间开播吧,它会无休无止的播、吃饭播、睡觉播、工作播、运动播…反正就是各种播。

我手上本来就有一台腾讯云服务器,直接拿来用即可。作为一个程序员,云服务器现在应该是标配了,学生可以用来学习,菜鸟可以用来练手,老鸟玩点有趣的东西偶尔赚点小钱。你如果想买一台云服务器来玩儿,下面是直达腾讯云优惠专区的链接:

七、总结

无人值守、直播推流听起来高大上,实际上,就这么两点:

第一、拿到推流接口

第二、上ffmpeg,开推

本次分享就到这里,赶紧开启你的无人值守直播吧。

源码猛点(免积分):https://download.csdn.net/download/u012071890/88437963

或者这里:https://github.com/shenmejianghu/bili-downloader

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概述: iShow是一套基于P2P技术的在线视频直播系统,iShow依存于web网页,无需下载插件,可实现低延时高清的视频语音直播体验。现已广泛应用于教育、娱乐、客服等各个行业,随着国内带宽的提升和各类新技术的加入,视频直播技术已经逐渐成为下一代互联网的主流,多媒体在线直播体验势必将会涵盖各类终端,成为全民参与的新一代互联网主旋律。 随着国家网络带宽的升级,民用宽带的价格逐渐降低以及微博等即时交流的网络媒体的兴盛,视频多媒体将将成为下一代网络的主流力量,iShow作为国内第一个也是唯一一个使用点对点视频技术开发的网站应用,正在引领一股新的流媒体平民化浪潮。 功能列表: 1、即时视频语音直播 2、视频状态检测 3、局域网内的P2P直播,不消耗任何外网带宽 4、可设置的视频清晰度和缓冲时间 5、无延时的即时文字和表情传输 6、礼物/消费/主播结算/房间类型等功能 7、播放录像功能 iShow的技术优势: 1、直播低延时、文本数据即时传输 2、多媒体直播不耗费任何服务器资源,对服务器无负载 3、带宽占用低 4、视频高清,采用高清编,影响更清晰,传输更流畅 5、无需架设额外的视频流媒体服务器,节省60%~90%的运营开支 6、可扩展,可跨平台同步直播 7、兼容任何开发语言,简单几步可与任何网站进行对接整合 8、智能识别用户的在线状态 9、可脱离动态程序和数据库独立运行,如:无需任何架设,即可直接集成到任何网站,进行直播或文字沟通 目前同行业唯一一款成熟产品,处于行业绝对领跑者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值