热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

熊猫TV技术与直播技术相关

音视频处理的一些流程:客户端编译、采集、推流、拉流、美化特效、水印、延时优化、音视频同步、p2p等等。当然还可能包括一些信号处理的知识,比如滤波,傅里叶变换(FFT)。>熊猫TV技术架构聚光灯

音视频处理的一些流程:

客户端编译、采集、推流、拉流、美化特效、水印、延时优化、音视频同步、p2p等等。当然还可能包括一些信号处理的知识,比如滤波,傅里叶变换(FFT)。

> 熊猫TV技术架构

聚光灯下的熊猫TV技术架构演进-- http://geek.csdn.net/news/detail/99651

直播面临的核心问题是网站稳定可用、视频流畅清晰、弹幕互动效果稳定。
端:Web页、iOS、Android、各种Pad端、网吧弹窗合作、电视盒子合作App、游戏主机合作App,从各个渠道扩展业务。
  负责短链接、微博Card对象、网游页游平台业务。
  需要满足用户登录注册、关注主播、看视频、发弹幕、加房管、领任务、送免费竹子等核心功能,采用了复用模块+主业务全新开发的策略。
  复用模块得益于团队的前360技术背景,根据直播秀场类项目上的技术积累,利用PHP框架Pylon、发版工具Rigger,在老战友的帮助下,重新搭建了一套QBus消息组件,长连接系统,改进的Redis、MongoDB和MySQL集群,视频云服务,敏感词服务,搜索服务
  视频模块——从新搭建视频云,RTMP推流拉流,接入三家CDN作为互备。这其中需要自己实现统一调用接口和服务,方便切换CDN: 推流地址、拉流地址、转码规定、开播断流回调、一键断流、连接数查询、流截图、直播时长查询。基本上每个接口都很重要!例如一键断流万一失效,则可能面临停业整顿风险;人数不准,主播挂人气刷榜,则可能导致不公平竞争而影响平台的体验与口碑。
  分布式基本组件:复用Syslog-ng日志收集系统、Kafka消息队列QBus、MySQL主从库、Redis主从库、MongoDB、SSDB大容量存储。
  长连消息:单机百万长连,支持千万用户同时在线,性能够用,保证聊天弹幕稳定性。
  图床:很重要的一环,房间截图,用户头像。
  CMS系统:配置各种推荐位,直播间的CDN调度

熊猫TV架构第一原则是高可用
 网络:需要应对国内复杂的网络环境,使用内网光纤互联的多IDC来覆盖多运营商。
 资源:DB和缓存都是集群化,配置Virtual IP方便切换。
 隔离性:不同业务不同机器,防止雪崩效应;核心和非核心业务隔离,流量扛不住情况保重点业务。
 降级:从Nginx和API层设置接口开关、Cache开关、DB开关,出问题一键切换。
 超时控制:主站每个依赖业务设置5秒超时,并有报警和错误日志。
 异步:用户不关心实时结果的大写入量业务使用异步方式更新,提高核心服务性能。
 监控:服务器错误设置log监控、接口监控报警,随时处理线上异常。

架构选型
  Web层:Nginx+PHP-FPM,开发迅速,适合团队技术现状,但需要针对服务器,做一定的调优配置。
  缓存层:Redis主从库、SSDB大容量存储,会在各个业务块儿使用,增加系统性能。
  存储层:MySQL主从库存储重要业务数据,属性变化不大。MongoDB数据库存储字段不固定变更较多的数值明细记录。SSDB存储观看记录关注等列表较长,且性能要求较高的数据。分表分库上考虑用户注册量和主播播放频率,用户中心、主播播放时长采用了按用户ID Sharding和 按年Sharding两种策略。业务初期暂时没有分库需求。
  消息队列:实现业务解耦,使用当前较流行的Kafka队列。

  安全性上:所有80接口做XSS校验,CSRF token防范,对接口做几十道安全检测,防止被拖库,防止COOKIE被盗用;反垃圾反盗号反外挂:含敏感词聊天信息过滤,垃圾IP封禁;注册和任务都增加图片验证码,识别机器刷用户刷竹子;房间人气值采用复杂策略,用算法综合判断确认合理性,防刷防挂;主播审核更加严格,身份证银行卡姓名等信息都要求录入,可以追究责任到真人,甚至有视频验证,严防色情内容。
  功能上:建立游戏娱乐户外等分类模块,运营自助增加分类;部署并自行运维第三方搜索服务,支持主播昵称、标题、房间号等维度搜索,过滤直播状态、主播地区、封禁状态等条件;礼物系统抽奖投票等系统上线,增加主播收益渠道,增加互动。
  优化效果:全年未出现过白页、首页不可访问情况,支撑千万级PV,百万级日活,单房间最高达到百万级在线,视频流量近TB级;接口平均响应时间20ms左右,99.9%在1s内;各个系统数据存储量破千万,MongoDB、SSDB等大容量库很好地支持了业务。

熊猫TV架构改进思路是应对峰值流量高度集中的直播需求,总结几条经验:
 不能依赖单个CDN。可自建,可用第三方,但中国网络环境太复杂,必须高度重视容灾。海外推拉流也需要十分关注。
 弹幕消息一定要做策略优化。广播蝴蝶效应明显,峰值可能将机房整体带宽打满。区分弹幕优先级,做好降级预案。
 提高金钱敏感度。直播网站由于有很清晰的变现模式,要严防褥羊毛,严防色情内容,火速响应监管,支付礼物交互一定是高可用、严监控。
 N个大主播 = 半个网站峰值。必须考虑某些特殊主播的火爆人气,做好视频弹幕房间信息上的峰值应对。

未来我们会在以下方面继续努力:
  自助式运营处理:帮助运营自助处理问题,直接和CDN对接,帮助技术人员从简单重复问题处理中脱身。
  反作弊:基于大数据处理体系的用户画像、设备画像、IP画像、内容画像,多维度构建反垃圾反盗号功能 。
  长连优化:支撑千万用户在线的高并发实时弹幕和聊天。
  礼物商城:优化计数对账,幂等处理整个支付到特效抽奖、弹幕消息、消费记录、统计等流程。
Golang、NodeJS服务化:替代性能较差需要各种优化的PHP,服务端接口全面Golang化,前端也在合适的场景使用NodeJS提高服务性能。此外需针对KV存储做value压缩,节省流量,提高接口速度。
数据挖掘和机器学习:渠道分析、用户分析等便于产品和高层决策,甚至开发出机器人主播互动。
  推荐:在综艺化娱乐化多元化的内容基础上,个性化推荐用户感兴趣的直播内容。
  搜索:自建搜索,从用户维度、聊天维度更好服务用户。
  日志收集分析:高性能日志方案探索,更快更迅速发现业务问题,分析流量变化。
  广告系统:友好娱乐化的广告展现,精准推送,严禁的计费系统。
  支付:国际化支持,多种银行卡信用卡接入,多种货币支持。
  NewSQL:引入TiDB等新SQL技术到某些业务,替换Redis、MongoDB、MySQL,更方便友好地进行技术开发。


> 直播技术

 直播技术(从服务端到客户端)-- http://blog.csdn.net/xwl198937/article/details/52371726
nginx下载地址:
  官方release:http://nginx.org/en/download.html
  gitHub地址:https://github.com/nginx/nginx
ffmpeg下载地址:
  官方release:https://ffmpeg.org/download.html
  gitHub地址:https://github.com/FFmpeg/FFmpeg
nginx-rtmp-module下载地址:https://github.com/arut/nginx-rtmp-module
在部署服务端环境其实包含很多东西的,最常用的web服务nginx,数据库Mysql、Nosql,api开发最多的三种选择:
  java环境,需要jdk,tomcat/jboss
  php环境,需要安装php,odp
  lua环境,需要安装lua、luajit
考虑使用缓存技术,则主要包含redis和memcached。如果还要其他的日志统计(kafka什么的)需求则还需要更多的环境

美丽播 手机直播APP源码
1、ffmpeg源码、处理音视频编码
2、gpuimage源码、处理美颜功能
3、ffmpeg、gpuimage只提供sdk集成,不提供源码
4、ios使用oc原生开发,android使用java原生开发,后端采用php+mysql+redis
5、消息推送走第三方推送平台
视频流压缩传输
程序首先会对接收到的视频流进行压缩及转换,让视频流更适合网络传输,减少直播传输所需要的带宽。当然程序是可以根据自己的要求来修改压缩比例以及视频播放的分辨率。
  
视频直播的传输协议是rtmp,视频编码是x264,音频编码是aac。
标清的码率在300~400kb,高清的码率在500kb~800kb。
视频分发走CDN加速。
聊天: 聊天走自己的聊天服务,支持Websocket传输协议。单台服务并发1万路以上。
网站:网站逻辑基于php、mysql、redis。
均衡负载功能<很强大的功能>
此功能可以无限添加FMS直播服务器,来分摊视频流的带宽负担。
首先,程序完全可以将网站程序与FMS视频流来分开,也就是说,网站可以单独使用一台服务器或者虚拟主机,FMS则使用另外一台独立的服务器,这样就不会因为视频直播流量大影响网站的访问速度。

  一个完整的直播过程,包括采集、处理、编码、封包、推流、传输、转码、分发、拉流、解码、播放,从推流到播放,再经过中间转发环节,延迟越低,用户体验越好。
  RTMP推流模式.HLS/RTMP视频服务器 —— HLS/RTMP拉流模式.

iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit-- http://blog.csdn.net/zhonggaorong/article/details/51483282
深剖VR,AR和MR三者之间关系-- http://geek.csdn.net/news/detail/104943
基于 React Native 的 58 同城 App 开发实践-- http://geek.csdn.net/news/detail/105028

  对直播的后台来说,用户管理、礼物管理、充值提现管理、房间管理、运营策略和数据,这几个功能是必不可少的。在用户管理上,有些用户可能在管理员巡查时发现存在问题,系统可以对他进行禁言和封禁。还有就是礼物的管理。直播平台礼物分大礼物和小礼物,大礼物是一出来之后有一个大动画,比如我们看映客中的飞机、法拉利、保时捷,这些属于大礼物,很贵,甚至有一些平台有土豪套装,比如说帝王套,一个要花费几千人民币。还有小礼物,一毛两毛这样的礼物,可以连发,一发 99 个或者 520 个。 
  互动直播的基本产品架构, 分为视频系统、互动系统、用户系统,包括管理后台。视频系统包括直播和点播 2 大块;互动系统,就是在直播间里的一些消息,包括评论、弹幕、点亮、礼物、对主播的关注和粉丝的关注,还有就是把当前的直播分享出去;用户系统包括用户资料(头像、性别、年龄)、充值、好友关系等。



推荐阅读
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • springboot基于redis配置session共享项目环境配置pom.xml引入依赖application.properties配置Cookie序列化(高版本不需要)测试启 ... [详细]
  • 关于mysql原理与web系统开发的信息
    本文目录一览:1、在做web开发的时候,MySQL主要功能是什么? ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • step1.为mongodb添加admin管理员root@12.154.29.163:~#mongoMongoDBshellversionv3.4.2connectingto:mo ... [详细]
  • Spark Streaming和Kafka整合之路(最新版本)
    2019独角兽企业重金招聘Python工程师标准最近完成了SparkStreaming和Kafka的整合工作,耗时虽然不长,但是当中还是遇到了不少 ... [详细]
  • Java开发面试问题,2021网易Java高级面试题及答案,实战案例
    前言大厂面试真题向来都是各大求职者的最佳练兵场,而今天小编带来的便是“HUAWEI”面经!这是一次真实的面试经历,虽然不是我自己亲身经历 ... [详细]
  • 我这几年踩过的十个坑,每一条都是血泪教训
    “阅读本文大概需要3分钟。”一、不记录程序部署在哪里“我:他妈的,这个程序明明一直在正确产生日志,可它到底运行在哪里?怎么我 ... [详细]
author-avatar
neixi_0592045
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有