tvb的直播源是怎么制作的

tvb的直播源是怎么制作的,第1张

tvb的直播源制作方法:
1、安装Nginx(简易服务器),Mac上安装命令brewinstallnginx-full--with-rtmp-module验证是够安装成功,执行nginx启动Nginx服务器。
2、安装ffmpeg(处理视频工具),Mac上安装命令brewinstallffmpeg,验证是否安装成功,输入命令ffmpeg。
3、配置Nginx(从而与ffmpeg配合实现推流),打开/usr/local/etc/nginx/nginxconf文件,添加rtmp模块。
4、在server模块中增加路径,用于测试。
5、查看是否可以推流,停掉之前开启的nginxnginx-sstop,再重启nginx(因为修改了配置文件),将之前live-demo中的testmp4模拟作为视频源,当成摄像头,进行视频采集即可。

1、推流
推流是一对一直播系统开发完成直播的关键控制模块,推流的首要作用便是收集、编码和传送,自然在推流控制模块中,也完成了一对一直播美颜的功能,以供网络主播应用。收集无需多讲,编码便是缩小音频视频数据信息,传送便是将音频视频数据信息推送到云服务器上,便于数据信息拉流和派发。
2、服务端
服务端为直播给予了格式转换、审批、视频录制回看等项目。转换格式是因为便于客户收看,由于网络不好的情况经常发生,假如想确保一对一直播不卡屏,必然要放弃直播的画面质量,转换格式便是一对一直播系统为了更好地转化成不一样画面质量而采用的技术。
3、播放视频端
播放视频端便是用户端,在开展一对一直播的的情况下,推流端推送数据信息之后,通过服务端的格式转换、视频录制等 *** 作,用户端便会获得拉流详细地址并播放视频。在播放端,一对一直播系统有很多可以改进的地区,例如编解码提升。
二、服务端搭建
一对一直播系统在发布前,最重要的当属搭建服务端了,服务端担负的职责十分重要,如果没有服务端的话,一对一直播就无法正常的开展。服务端搭建的前提是主流媒体服务器,如今普遍的主流媒体服务器有SRS、Nginx-RTMP等,也有一些云主机。
一对一直播系统在搭建服务端时,最常使用的便是云主机,由于云主机的特性不错,也是有非常完善的搭建部署计划方案,还能随时随地扩充,提高配置,对开发搭建而言特别便捷。
三、直播间推流
一对一直播系统开发通常应用OBS开展推流,在推流时为了更好地 *** 纵码率,专业技术人员可以应用稳定码率、可变码率、均值比码率和稳定码率指数这种码率 *** 纵方法,实际应用哪一种 *** 纵方法,一对一直播系统开发可以依据具体情况挑选。
上边所讲的,仅仅完成直播的部份内容,一对一直播系统开发也有许多必须留意的地方,例如礼品系统、用户闲聊等,仅有丰富多彩的系统功能,才可以吸引住更多客户。

Nginx是一个高性能的Web和反向代理服务器,它具有有很多非常优越的特性:

作为负载均衡服务器 :Nginx既可以在内部直接支持Rails和PHP,也可以支持作为>

开发一个直播app其实不需要太多的钱,和一般的APP一样,是根据实际功能需求的页面总数来估算价格的,

比如说一个页面800元,当然只有几个功能的话一定会有个底价,就像打车也有个起步价,毕竟不管再少的功能

也要配备后台开发人员,前端开发人员,ios和安卓各一个,还有UI和产品经理,这是基本配置。

直播app这个核心模块一般是选择第三方的SDK接入,就像短信接入,聊天接入一样都有相关模块的服务商,

相关收费标准需要咨询SDK服务,山东趣构网络科技有限公司都会给你搞定,费用是开发之外的,

因为很多SDK都是按数量或者流量计费的。当然你也可以选择自己研发SDK,不过费用会非常高,

技术门槛也很高,即使开发出来没有经过长时间大量的用户检验是无法提供完善服务的,

市面上除了直播巨头拥有自己的SDK,其他的基本上都是调用第三方SDK。开发费用是可以量化的,

需要投入的可能是APP上线之后的推广营销费用,这是非常巨大的一笔投入,当然也有很多免费的渠道,

需要把各个应用市场的优化工作做好。

企业直播平台

相比于传统直播服务平台,企业直播APP平台不管是在硬件设备上还是软件上,实现的难度更加高。

主要技术功能模块主播端:把主播实时录制的视频,经过(采集、美颜处理、编码)

推送到服务器服务器:处理(转码、录制、截图、鉴黄)后分发给用户播放端播放器:

获取服务器地址,进行拉流、解码、渲染互动系统:聊天室、礼物系统、赞主播端:LFLiveKit

已包含采集、美颜、编码、推流等功能服务器:nginxrtmp服务器免费开源,能搭建本地电脑上,

支持RTMP协议,满足直播需求。播放端:ijkplayer视频直播框架封装很完善只要有url,

就可以实时播放由于涉及音视频的编码解码、美颜功能的算法,帧的处理等很多问题,

能从底层自己开发的完整功能的绝对是大牛!不过正是有这些大牛们的奉献,

我们不需要处理繁琐的底层问题,一些封装好的库可以完美实现。

1、利用第三方直播SDK快速的开发梦网视频云:提供以实时轻视频技术为核心,

开放智能视频、VideoCDN、VR、视频编码、视频渲染、分布式缓冲、软交换、多屏播放等前沿视频技术。

帮您从容应对业务突发峰值。广泛应用于游戏直播、娱乐直播、泛生活直播、教育类、远程医疗、

企业远程视频会议等典型场景。提供一站式视频解决方案,帮助企业一个星期搭建完整的视频直播平台。

同时结合领先的人工智能技术,开放智能图像识别、视频特效、黄反审核功能,让视频内容更丰富,更安全。

梦网视频云是专为企业平台打造的视频服务和一站式实现SDK/API端到端直播场景的企业级直播云服务平台。

2、自研还是使用第三方直播SDK开发?自研:对于一个初创公司或团队来讲,自研直播不管在技术门槛、CDN、

带宽上都是有很大的门槛的,而且需要耗费大量的时间和成本才能做出成品,不利于前期发展。

第三方SDK开发:开发周期短,前期投入少,从长远看,第三方费用较高,占很大一笔支出,

相对来说自研可以节省成本,技术成面比直接用SDK相对可控。

视频编码有几种方式:
1硬编码,使用MediaCodec实现
2软编码,使用FFmpeg或者libx264库来实现。

本文分享在Android平台视频编码-软编码的实现,也就是用FFmpeg来实现视频的编码,rtmp推流到服务器上,相机采集视频将在下一篇文章分享。

流媒体服务器使用 nginx-rtmp-module 来进行搭建。

本文所使用FFmpeg的版本是41,关于FFmpeg编译成Android平台so库如果有需要,我将在下一篇文章分享说明。

视频编码比较耗cpu,上传视频数据的会耗网络io,所以需要开启新线程去处理,这里我用HandlerThread来处理视频的编码上传。

初始化编码相关 *** 作
这里我们使用的是FFmpeg,所以在编码前我们会先做一些初始化以及参数设置工作。
FFmpeg初始化
av_register_all()
创建输出格式上下文
avformat_alloc_output_context2()
获取编码器
avcodec_find_encoder(AV_CODEC_ID_H264) 获取H264的编码器
设置编码器参数

使用给定的编码器和参数初始化编码上下文
avcodec_open2(pCodecCtx, pCodec, &param)
创建视频流
video_st = avformat_new_stream(ofmt_ctx, pCodec)
打开输出上下文
avio_open(&ofmt_ctx->pb, out_path, AVIO_FLAG_READ_WRITE)
写入输出头信息
avformat_write_header(ofmt_ctx, NULL)

像素格式转换
AV_PIX_FMT_YUV420P,它是纯平面存储。总共三个平面,分别存放,Y、U、V数据。
当图像宽是width,高是height时,Y分量的大小就是width×heitht,而U是width×heitht/4,V也是U是width×heitht/4。
H264编码
首先我们需要了解两个数据结构AVFrame、AVPacket
AVFrame存放的是原始数据、AVPacket存放的是编码后的数据。
创建AVPacket
av_new_packet(&enc_pkt, picture_size);
开始编码
ret = avcodec_encode_video2(pCodecCtx, pFrameYUV);
输出一帧编码后的视频数据
ret = av_write_frame(pCodecCtx, &enc_pkt);

释放资源

小伙伴们有疑问的可以在下方评论区评论。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13426154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-03
下一篇 2023-08-03

发表评论

登录后才能评论

评论列表(0条)

保存