精华内容
下载资源
问答
  • 但是,你知道直播平台后面的技术和实现原理码? 正好去年过年的时候,一个朋友破解了AirPlay和Chromecast协议,...想到的第一个应用是做一个 直播的直播服务 ( 如有感兴趣的投资人,可以联系 )。比如,通过屏

    现在直播非常火爆,可以从PC或手机直播,然后从PC或是手机或是 支持HTML5的浏览器 收看。但是,你知道直播平台后面的技术和实现原理码?

    正好去年过年的时候,一个朋友破解了AirPlay和Chromecast协议,然后开发了一套技术能够截获和播放任何手机(iOS或是Android)屏幕上的任何内容。想到的第一个应用是做一个 直播的直播服务 ( 如有感兴趣的投资人,可以联系 )。比如,通过屏幕直播,你可以邀请朋友看你正在看的直播的电影,球赛,演唱会,晚会,不管是免费的还是付费的。当初的想法是将屏幕的内容,通过AirPlay或Chromecast,推送到后台服务器,然后,受邀的朋友就可以从浏览器或是其它视频播放器观看了。为此,我们搭建和开发了一个直播平台,现在把我们实现的过程记录下来和大家共享。

    首先,视频有它的播放协议。原则上,RTSP,RTMP,HTTP都可以做直播和点播,但一般做直播用RTSP和RTMP,做点播用HTTP。我们选用的是RTMP协议。

    RTMP 协议

    RTMP(Real Time Message Protocol/实时信息传输协议)是应用层协议,靠底层传输层协议(通常是TCP)来保证信息传输的可靠性的。在TCP链接建立后,RTMP协议也要客户端和服务器通过“握手”来建立RTMP Connection,然后在Connection上传输控制信息。RTMP协议传输时会对数据格式化,而实际传输的时候为了更好地实现多路复用、分包和信息的公平性,发送端会把Message划分为带有Message ID的Chunk,每个Chunk可能是一个单独的Message,也可能是Message的一部分,在接受端会根据Chunk中包含的data的长度,message id和message的长度把chunk还原成完整的Message,从而实现信息的收发。

    我们看看两个常用的视频服务。一个是由客户端向服务器发起请求推流到服务器,这个就是直播的播放服务,流程如下。

    另一个是由客户端向服务器发起请求从服务器端接受数据,可以多次调用,这就是播放服务。流程如下。

    RTMP是直播后面的协议,有很多的开源软件实现了,细节我们不再细说。下面,我们看看怎么搭建后台服务系统。

    安装和配置 LEMP

    LEMP栈是指Linux(L), NGINX(E), MySQL(M), PHP(P),还记得LAMP吗?LEMP既是将NGINX(E)取代了Apache(A)。

    首先,用以下命令安装和启动NGINX web server。

    # sudo apt-get update
    # sudo apt-get install nginx
    # sudo service nginx start

    接着,安装MySQL。

    # sudo apt-get install mysql-server mysql php5-mysql

    接着,安装和配置PHP。

    # sudo apt-get install php5-fpm
    location ~ .php$ {
      try_files $uri =404;
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
    }

    最后,重新启动NGINX web server。

    # sudo service nginx restart

    这样,后台的web server设置好了,可以对外提供网页和PHP服务了。但是,NGINX并不支持RTMP协议,我们需要下载,编译,安装和配置RTMP模块。

    安装和配置nginx-rtmp-module

    首先,下载NGINX的源代码,确保环境下能正确的编译。

    # git clone https://github.com/nginx/nginx.git

    然后,下载RTMP模块。

    # git clone https://github.com/arut/nginx-rtmp-module.git

    然后,cd到NGINX的源代码目录,config,make和install 刚才下载的RTMP模块。

    # ./configure --add-module=/path/to/nginx-rtmp-module make make install
    # make
    # make install

    最后,在NGINX的配置文件中,加上RTMP相关的配置,并且重新启动NGINX server。

    rtmp {
        server {
            listen 1935;
            chunk_size 4000;
    
            # HLS
            application hls {
                live on;
                hls on;
                hls_path /tmp/hls;
            }
    
            # MPEG-DASH is similar to HLS
            application dash {
                live on;
                dash on;
                dash_path /tmp/dash;
            }
        }
    }
    
    # HTTP can be used for accessing RTMP stats
    http {
        server {
            listen      8080;
    
            # This URL provides RTMP statistics in XML
            location /stat {
                rtmp_stat all;
                # Use this stylesheet to view XML as web page
                # in browser
                rtmp_stat_stylesheet stat.xsl;
            }
    
            location /stat.xsl {
                # XML stylesheet to view RTMP stats.
                # Copy stat.xsl wherever you want
                # and put the full directory path here
                root /path/to/stat.xsl/;
            }
    
            location /hls {
                # Serve HLS fragments
                types {
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                }
                root /tmp;
                add_header Cache-Control no-cache;
            }
    
            location /dash {
                # Serve DASH fragments
                root /tmp;
                add_header Cache-Control no-cache;
            }
        }
    }

    其中看到了服务器上视频存储的格式是HLS,下面需要介绍一下这个格式。

    HLS(HTTP Live Streaming)

    HLS是一个由苹果公司提出的基于HTTP的流媒体网络传输协议,它把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。开始播放时,客户端会下载一个包含元数据的extended M3U (m3u8)playlist文件,用于寻找可用的媒体流。工作原理如下。

    m3u8 playlist的文件结构,它不是一个单独的文件,而是由一系列文件组成。Index文件和很多的数据文件。

    一个m3u8 playlist的index文件内容。

    所有的数据文件,以.ts为后缀,存放在同一目录下面。

    直播客户端(后面我们要介绍的OBS)将实时视频推送到NGINX的RTMP模块。RTMP模块会根据配置将视频流转换成HLS文件。这时,HLS文件可以使用两种模式播放。一是点播VOD模式,下载当前时间点可以获取到所有index文件和ts文件,并播放。这种模式允许客户端访问全部内容,不一定是实时内容。二是Live 模式,实时生成m3u8和ts文件。它的索引文件一直处于动态变化的,播放的时候需要不断下载index文件,以获得最新生成的ts文件播放视频。一般来说,实况直播时,会有一些延时。下面,来看一个JS实现的HLS player,嵌入到支持HTML5的浏览器就可以播放HLS文件。

    HLSPlayer

    基于Javascript的HLS Player可以在PC浏览器(IE,Chrome,Firefox,Safari,等),iOS的Safari,Android的Chrome,等等支持HTML5的浏览器上播放。市面上有很多开源的,下面图中是其中的一种,对于不同浏览器的支持都很好。下载以后,按照它给的例子修改HLS的源就可以了。

    除了JS的播放器,还有独立的播放器,ffmpeg是广泛使用的一种命令行播放器,支持Windows,Linux,Mac等。

    ffmpeg

    ffmpeg是一个非常快的视频/音频转换器,也可以现场抓取音频/视频源,并在任意采样率、尺寸之间调整视频,以及提供多种高品质的滤镜系统。ffmpeg从任意数量/形式的输入文件中进行读取,通过输入文件选项对输入文件进行设定,并写入到任意数量/形式的输出文件中。它不但可以对任何格式的音视频文件相互转化,而且可以播放任何格式的音视频文件。它的命令行选项超多,具体细节需要用到时自己去网上搜索和阅读。

    例如,下面的命令将一个本地的视频文件movie.avi推送到服务器上可以生成HLS格式的文件。

    # ffmpeg -loglevel verbose -re -i movie.avi -vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/hls/movie

    OBS

    OBS(Open Broadcaster Software/开源直播软件),它是目前世界上最火的免费开源直播软件。由于它是免费的,而且质量高,对比其它软件就有天生的优势,很多商业化的直播平台都支持和推荐使用。下面是它的基础界面。

    OBS能够讲视频流推送到支持RTMP协议的服务器上,需要进行一些简单的设置。服务器的地址,和流的密钥,这样,可以区分不同的用户,也保证了不同用户的内容安全。

    直播平台Demo

    基于上面描述的技术和开源系统,我们用PHP实现了一个简单的支持多用户的直播平台。用户可以注册,登录,follow/unfollow,评论,标签,收看,直播(每个用户有自己的直播密钥),等等。

    源代码文件目录。

    注册界面。

    播放和评论界面。

    直播使用的是OBS,也可以使用你喜欢的直播移动App,需要设置系统给每个用户提供的密钥。收看时,直接选择用户和他正在播放视频就好了。

    直播的精髓都应该讨论到了,如果将系统sharding,分层,SOA化,负载均衡,cache,就可以搭建出一个可扩展的大规模的直播平台。

    http://www.open-open.com/lib/view/open1473231814360.html

    展开全文
  • 一个开放平台解决方案项目,基于Spring Cloud实现,目标是能够让用户快速得搭建起自己的开放平台。 SOP提供了两种接口调用方式,分别是:支付宝开放平台的调用方式和淘宝开放平台的调用方式。 通过简单的配置后,...

    SOP(Simple Open Platform)

    3.0已经发布!

    项目地址

    一个开放平台解决方案项目,基于Spring Cloud实现,目标是能够让用户快速得搭建起自己的开放平台。

    SOP提供了两种接口调用方式,分别是:支付宝开放平台的调用方式和淘宝开放平台的调用方式。
    通过简单的配置后,你的项目就具备了和支付宝开放平台的一样的接口提供能力。

    SOP封装了开放平台大部分功能包括:签名验证、统一异常处理、统一返回内容 、业务参数验证(JSR-303)、秘钥管理等,未来还会实现更多功能。

    项目特点

    • 接入方式简单,与老项目不冲突,老项目注册到注册中心,然后在方法上加上注解即可。
    • 架构松耦合,业务代码实现在各自微服务上,SOP不参与业务实现,这也是Spring Cloud微服务体系带来的好处。
    • 扩展简单,开放平台对应的功能各自独立,可以自定义实现自己的需求,如:更改参数,更改签名规则等。

    谁可以使用这个项目

    • 有现成的项目,想改造成开放平台供他人调用
    • 有现成的项目,想暴露其中几个接口并通过开放平台供他人调用
    • 想搭一个开放平台新项目,并结合微服务的方式去维护
    • 对开放平台感兴趣的朋友

    以上情况都可以考虑使用SOP

    已完成列表

    • 签名验证
    • 统一异常处理
    • 统一返回内容
    • session管理
    • 秘钥管理
    • 微服务端自动验证(JSR-303)
    • 支持Spring Cloud Gateway
    • Admin管理平台,统一管理微服务配置,管理路由管理,微服务上下线
    • 接入方管理+秘钥管理
    • 接口权限分配
    • 文件上传
    • SDK
    • 接口限流
    • 文档整合
    • 应用授权
    • 监控日志
    • 支持nacos

    相关文档

    开发文档

    沟通交流

    Q群:167643071

    展开全文
  • 在IOT平台注册设备设备,携带PSK和IMEI, 在平台设备注册后,设备就会添加到设备列表中,设备状态为离线状态 设备上电入网成功后(设备入网过程参考:BC95手动入网和自动入网),设置CDP服务器 AT+NCDP=xxx.xxx.xxx....

    在IOT平台注册设备,携带PSK和IMEI(PSK是为加密设备使用的)
    在这里插入图片描述在平台设备注册后,设备就会添加到设备列表中,设备状态为离线状态
    在这里插入图片描述
    设备上电入网成功后(设备入网过程参考:BC95手动入网和自动入网),设置CDP服务器
    AT+NCDP=xxx.xxx.xxx.xxx,5683 (IP为IOT平台接入地址,CoAP协议端口号可以省略)
    【注】:平台注册设备时选择不加密方式,在配置CDP服务器地址时,端口为5683,不需要DTLS握手;选择加密方式时,端口为5684,需要DTLS握手)

    发送数据到平台
    AT+NMGS=3,010203;
    平台profile定义和编解码插件参考https://bbs.huaweicloud.com/forum/thread-13547-1-1.html

    平台解码成功后,设备会显示在线
    在这里插入图片描述
    【注】:1. 当平台没有注册设备时,设备发送AT+NMGS=3,010203;会报错+CME ERROR: 513(TUP not regisitered)。
    有些模组开机入网后会自动注册IOT平台,有些不会,具体要看模组型号。不自动注册平台的模组在收到上行命令AT+NMGS时,触发模组注册:向平台请求建立TUP,当平台没有注册设备时,会请求超时,4S内没有建立成功则丢掉NMGS数据,上报513错误,指示模组处在还没有注册成功的状态。 若第一次注册超时(10s)没有成功,模组重新发起注册,分别会在第0/10/30/60/100s发起5次注册操作,注册到IOT平台响应超时(每次注册的超时间隔依次是10s/20s/30s/40s/50s),直到注册成功或5次都注册失败为止。
    当平台已经注册时,有时第一次发送数据也会有出现错误,和信号质量有关,平台ACK超时,这种情况尝试多发送几次或者改善网络环境

    1. 在没有注册时,通过AT+NMSTATUS?查询信息注册状态,模组会返回:
      “+NMSTATUS:REJECTED_BY_SERVER”
      平台注册成功后,从复位开始查询会依次返回:
      “+NMSTATUS:INIITIALISED”(初始化)
      “+NMSTATUS:REGISTERING”(注册中)
      在网络附着成功后查询结果为:
      “+NMSTATUS:MO_DATA_ENABLED”(移动源数据使能,代表可以发数据)

    2. 模组发起注册请求时,在IOT平台有对应日志记录

    在这里插入图片描述

    展开全文
  • 鲁班账号是一个可以刷微信公众号关注,微信文章点赞浏览,点在看的平台账号,经常有那些公众号有邀请好友关注送实物或现金的活动,这样我们可以自己平台上面刷,想怎么刷就怎么刷,从此再也不用到处求人帮助关注了...

    鲁班账号是一个可以刷微信公众号关注,微信文章点赞浏览,点在看的平台账号,经常有那些公众号有邀请好友关注送实物或现金的活动,这样我们可以自己在平台上面刷,想怎么刷就怎么刷,从此再也不用到处求人帮助关注了,自己动手,美滋滋,有想要鲁班账号的可以在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 搭建一个属于自己的博客平台

    万次阅读 2017-08-14 15:31:42
    正文最近花了几天时间,终于把属于自己的博客平台搭建出来了,参考地址:yooongchun’s Blog,中间走了不少弯路,在这里写下这教程,供有兴趣搭建自己博客或者个人网站的朋友参考。首先,总结一下搭建这个平台的几...
  • “随着互联网发展,我们用的...今天中午午休期间和同事聊起来(吹牛逼)我的网站的时候,展示说37k分析网站怎么用,怎么分析一个人的特征,分析速度在10秒内从几百上千个互联网节点获取信息,并通过评分规则,特征...
  • 云盘真的是依靠互联网生存的人一定要有的东西,把自己在网上遇到的东西存到互联网的一个角落,永不过期,如果愿意还可以分享出去。国内有很多云盘我先介绍一下我用过的倒闭的云盘吧。   阿宏最开始用的叫“酷...
  • 如何设计一个开放平台openapi?

    千次阅读 2019-08-30 22:08:14
    从05年开始随着web2.0技术的快速发展,硅谷掀起了开放平台openapi的股热潮,google开放了map api,还有很多互联网公司也推出了开放平台,但是真正引起人们注意的是twitter开放了社交api,堆基于twitter开放平台...
  • 1.首先你要编写好网页,最简单的就是用div+css写一个静态的html文件,如:index.html。 第二:购买服务器和域名,用于存放你的网页 1.购买一台服务器,建议去阿里云的centos服务器。 服务器:为什么要服务器呢?...
  • 基于SSM的校园二手交易平台的设计与实现

    万次阅读 多人点赞 2018-05-06 14:24:44
    PS: Java版本:1.7 数据库:MySQL 框架:Spring + Spring MVC + MyBatis 服务器:Tomcat 前端解析框架:Thymeleaf 开发工具:Idea 2017 版本管理工具:Maven 版本控制工具:GitHub ...、设计概...
  • 首先单独新建一个boot项目当做eureka的注册中心  1.在建立项目的时候:勾选上eureka server依赖如图所示 2.在propertities资源文件中加入注册中心的配置: server.port=8761 eureka.instance.hostname=...
  • 自媒体平台账号注册和管理系统

    千次阅读 2019-01-07 10:12:45
    自媒体也就是公民媒体,自己自己的主人,进行品牌宣传,其中有很我这样的平台头条号、大鱼号、企鹅号、百家号、微信公众号等自媒体平台,那么运营就是,做好一个核心点,统筹好这些平台,做好粉丝运营。...
  • 饿了么开放平台接入(1)——开放平台注册与使用

    万次阅读 热门讨论 2018-03-09 11:12:15
    最近有项目要接入饿了么外卖平台,本来以为很简单的事,结果是这事还真费了2天功夫,是所谓简单又复杂。 简单方面,因为饿了么封装了sdk,基本相关的业务逻辑都封装好了,比如什么获取订单、取消订单、添加商品...
  • 按键精灵,虽然很早听过,但是一直没有真正使用过,所以最近有点时间也简单试一下,通过脚本自动清理APP缓存,打开百家号并自动进入注册页面输入自己的手机号。 软件清单 1. 雷电手机模拟器:...
  • 注册免费的外贸B2B平台有什么作用

    千次阅读 2018-09-27 08:09:46
    各行各业都有属于自己的B2B外贸平台,有综合型的还有专业型的平台,对平台而言主要是分免费和付费之分。其实,我们注册免费的平台,基本上都是想从中得到询盘,但是要知道这些平台都会有付费会员,对比较大的平台而...
  • 考虑左右,为了个人学习和提升,选型基于流行的springboot+springcloud,从零开始搭建一套自己用于学习的研发平台。 整体平台的流程,从管理、开发、测试、运维、生产几条线,实现整体平台的落地和管理,下面是整体...
  • Dubbo-Admin管理平台和Zookeeper注册中心的搭建

    万次阅读 多人点赞 2015-08-27 15:00:45
     ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、...
  • 个人隐私是我们每人都比较关注的事情,对于我们生活在互联网的人们来说,隐私泄露可能已经是件常见的事情。 所以我们经常把这样句话挂着嘴边:互联网的世界没有隐私可言,虽然是以玩笑话说出来的。 但是,...
  • PTA程序设计类实验辅助教学平台注册、登录与校园账号绑定(下文统称:PTA) 网址:https://pintia.cn/ 点击链接后会跳转到PTA的首页,如下界面: 1. 注册: 点击PTA首页右上角的“注册”跳转到注册界面: 注册:...
  • 搭建一个全新CTF靶场平台

    千次阅读 2020-03-11 21:46:07
    由于疫情原因,在家闲着无聊,给学弟学妹搭一个CTF平台,所以去研究研究CTFD,但是我没有在我可怜的阿里学生机上跑起来,无奈之举,立志要写一个CTF平台。写了一个前端还算糊弄的CTF平台。可能还有好多BUG没有发现,...
  • 怎样创建一个订阅号

    千次阅读 2019-05-30 11:44:29
    由于公司要开发一个订阅号,自己整理了下相关信息这里分享给大家 1 首先你需要有一个邮箱 ,然后打开微信公众平台 微信公众平台地址 打开之后点击注册 会跳到界面 2 选择订阅号 点击订阅号会有一个提示,点击...
  • 选择一个自己能力解决范围的平台,做一个整体抓取,然后在通过其他平台进行抓取补充,还有需要考虑到后期的企业更新; 总注册企业信息:2亿;工商注册企业:8000万;按照抓取进度差不多100天时间能进行完全抓取; ...
  • 开外汇平台赚钱,是一个普遍流传的说法。但是开平台到底有怎么样的风险,需要注意哪些环节,要办理哪些手续,多数人还是感到非常神秘。汇商琅琊榜小编今天结合平台搭建行业资深人士的经验,来和大家谈谈怎么样搭建.....
  • 在本文中,我们将深入探讨构建和启动自己的加密货币(如比特币)的交易平台——交易所。如果你想了解更多有关P2P交易,或margin交易以及如何通过它们赚钱的信息,那么很欢迎,我们将深入解释一切。 让我们从开始就...
  • JAVA校园二手交易平台

    千次阅读 多人点赞 2019-10-07 09:49:50
    本系统主要面向于大学校园网用户,依托校园网提供给这些用户一个发布和交流二手商品信息的平台。在大学校园里,存在着很多的二手商品,但是由于信息资源的不流通以及传统二手商品信息交流方式的笨拙,导致了很多仍然...
  • 主要用到的技术有百度开放平台中的人脸检测、人脸识别、Python图形界面开发PyQt5、线程的管理、以及通过python调用百度接口实现人脸检测、百度开放平台中人脸检测技术文档的理解等,由浅入深、由局部到整体的一个...
  • 为何一定要有自己的博客 如何选择平台

    千次阅读 多人点赞 2018-09-21 11:13:05
    有很多筒子工作到一定程度后终于发现了写博客的重要性,方面帮助自己记录学习心得,方面也能帮助他人解决问题,但更多的人却认识不到拥有自己的技术博客的重要性。 这话题北妈之前也强调了不少次,很多人都...
  • 设计一个优雅的登录注册模块

    千次阅读 2016-10-15 11:23:30
    本文内容比较空洞枯燥,作为抛砖引玉只呈现出一个简单登录注册系统逻辑,但都是干货,登录注册系统的设计其实没有一个千篇一律的模板,都需要根据自己产品系统的特点来灵活处置,并且做好每一步的引导,处处都是细节...
  • 教你快速创建属于自己一个APP 本人是一个对于APP开发全然不知、编程能力极弱的人。但由于参加互联网+,不得不找一些低代码量的开发平台。通过了解,找到一个叫做APICLOUD的低代码量的开发平台。如果你也是代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 269,018
精华内容 107,607
关键字:

怎样注册一个自己的平台