rtmp协议

直播平台简单搭建笔记

僤鯓⒐⒋嵵緔 提交于 2020-03-29 22:10:02
直播平台大致流程 实时传输协议有 :RTMP、HLS、HDL(HTTP-FLV) 编译环境 apt-get install build-essential nginx安装 安装pcre (目前最新8.44) ./configure make && make install pcre-config --version //查看版本 下载 nginx-rtmp-module 源 git 下载 https://github.com/arut/nginx-rtmp-module 安装nginx(目前最新1.17.9) ./configure --add-module=../nginx-rtmp-module --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.44 make make install obs studio 视频直播录制软件安装(debian尽量9以上,因为ops有要求,不然自己编译有点麻烦) https://obsproject.com/download ffmpeg转码安装 https://obsproject.com/wiki/install-instructions#linux里有安装流程 或者低版本的

基于Nginx的媒体服务器技术-线上公开课

荒凉一梦 提交于 2020-03-26 01:25:52
国内应用比较多的开源流媒体服务器nginx-rtmp-module一直存在功能少、集群化难度大等问题。在LiveVideoStack线上分享中,PingOS 开源项目组开发工程师、UCloud RTC研发工程师朱建平详细介绍了基于nginx-rtmp-module的PingOS流媒体服务器在http-flv、http-ts、hls+、多进程、转推、回源以及集群化部署方面的技术实现细节。 文 / 朱建平 整理 / LiveVideoStack 直播回放 https://www2.tutormeetplus.com/v2/render/playback?mode=playback&token=006643cdea15499d96f19ab676924e88 1. Nginx流媒体扩展:http-flv、http-ts、hls+ 最初始的nginx-rtmp-module相关模型与包括SRS在内的多数流媒体服务器实际上是一样的(1个生产者,n个消费者)。Nginx存一个问题:它仅仅做了RTMP的消费模型,如果想扩展 http-flv或http-ts的形式会较为困难。由于rtmp-session仅供RTMP协议使用,如果想扩展http-flv,首先我们需要了解其基础分发模型(如上图所示):所有的生产者与消费者都会被挂载到同一个stream中,生产者负责从网络端接收数据

rtmp直播拉流客户端EasyRTMPClient TCP窗口大小设计方法

烂漫一生 提交于 2020-03-22 20:56:00
EasyRTMPClient 简介 EasyRTMPClient是EasyDarwin流媒体团队开发、提供的一套非常稳定、易用、支持重连接的RTMPClient工具,以SDK形式提供,接口调用非常简单。该EasyRTMPClient库未使用或参考现有的任何RTMP库,完全由EasyDarwin团队自主实现,因此,EasyRTMPClient更易于维护,稳定性、可扩展性得以提升,同时,本RTMP库全平台支持(包括windows/linux 32&64,ARM各平台,android, ios)! 相关连接 EasyRTMPClient调用示例地址: https://github.com/EasyDSS/EasyRTMPClient 由EasyDarwin团队推出的 RTMP协议教程: 初级部分 进阶部分 高级部分 谈谈RTMP窗口大小 RTMP窗口大小基本概念 RTMP消息包一共分成三种类型。一类是命令(通知)消息,一类是音频消息,一类是视频消息。而窗口大小则属于第一种消息,即命令消息。窗口大小的本意是让对端了解与本端的通信状况,用以控制媒体传输流量的一种方案。通常,我们从RTMP服务器中进行拉取RTMP流到本地时,在协商的过程当中,会发送0x05,0x06消息包,即带宽值通知,通常设为2.5M。在实际的拉流过程中,我们通常隔一段时间就得向服务器报告,我们已经从服务中收到了多少数据量

EasyDarwin如何支持点播和RTMP/HLS直播?EasyDSS!

亡梦爱人 提交于 2020-02-22 23:16:38
2017年很长很长一段时间没有更新EasyDarwin开源项目了,虽然心里有很多EasyDarwin功能扩展的计划:比如同步录像、同步RTMP/HLS直播输出、拉模式转发优化、Onvif接入、GB28181特性、等等,但实乃有心无力,每天都疲于应付开源社区中的各种技术咨询,另一方面是需要给开源开发团队造血,需要商业项目支撑开源团队的运转,所以,2017上半年沉寂了半年,计划开发出几款小而美的产品来帮助团队通过商业项目的方式输血,走商业+开源的可持续发展路子; 在2017年的上半年,我们在商业项目上主要在:EasyNVR摄像机互联网直播服务、EasyDSS点播与直播服务器、EasyRMS录播服务器等方面投入了大量的精力,EasyNVR和EasyRMS的功能特性在这篇中就不阐述了,本篇主要说一下我们做的EasyDSS点播与直播服务器,到底是个什么鬼? 等不及的可以先看: http://www.easydss.com ,边看演示,边看博客; 总所周知,EasyDarwin是基于Apple的开源项目Darwin Streaming Server衍生而来的,而Darwin本身支持的是RTSP流媒体协议,在之前的博客《 网络直播流媒体协议的选择讨论,RTSP,RTMP,HTTP,私有协议? 》中也给出了一些自己的见解,RTSP做点播协议已经不是很能满足安防/互联网点播的需求了

EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器同步输出http-flv协议流是怎么实现的?

橙三吉。 提交于 2020-02-22 22:27:54
http-flv是什么 http-flv是以http为传输协议,flv媒体格式为内容的方式实时下载flv音视频帧。为什么选择flv格式而非mp4?原因是mp4必须要有moov box或者moof box才能播放,而moov box和moof box 中主要存储的是帧的索引,在实时直播过程中所有未产生的帧都是无法预测的,所以moov和moof都不能提前生成,也就很难做到实时的效果。当然moof box有点特殊,可以重复出现,这样就能每隔几帧就生产一个moof box下发给客户端,也是可以做到直播效果的,这种方式被人们广泛称为http-fmp4,DASH协议就是是利用moof实现的。 flv文件不同之处在于,播放器只要获取到其中的metadata、avc-header、aac-header后就可以顺序播放接下来的所有帧。所以服务器只需要在客户端连接的时候顺序发送metadata、avc-header\aac-header后连续不断地发送音视频帧播放器就会不停接收并且播放flv内容了。 sequenceDiagram 播放器->>服务器: http://ip/app/stream.flv 服务器->>播放器: 返回flv-header 服务器->>播放器: 返回metadata 服务器->>播放器: 返回avc-header 服务器->>播放器: 返回aac-header 服务器->

RTMP流媒体播放过程

随声附和 提交于 2020-02-22 19:51:23
本文描述了从打开一个RTMP流媒体到视音频数据开始播放的全过程。 注意:RTMP中的逻辑结构 RTMP协议规定,播放一个流媒体有两个前提步骤:第一步,建立一个网络连接(NetConnection);第二步,建立一个网络流(NetStream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。他们的关系如图所示: 1 简要介绍 播放一个RTMP协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。RTMP连接都是以握手作为开始的。建立连接阶段用于建立客户端与服务器之间的“网络连接”;建立流阶段用于建立客户端与服务器之间的“网络流”;播放阶段用于传输视音频数据。 2 握手(HandShake) 一个RTMP连接以握手开始,双方分别发送大小固定的三个数据块 a) 握手开始于客户端发送C0、C1块。服务器收到C0或C1后发送S0和S1。 b) 当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。 c) 当客户端和服务器分别收到S2和C2后,握手完成。 握手 3建立网络连接(NetConnection) a) 客户端发送命令消息中的“连接”(connect)到服务器,请求与一个服务应用实例建立连接。 b) 服务器接收到连接命令消息后

海康威视网络摄像头开发流程(六)-------- 测试RTMP播放协议的页面

蓝咒 提交于 2020-02-18 17:03:40
1、新建demo-rtmp.html文件,代码如下: < ! DOCTYPE html > < html lang = "zh-CN" > < head > < meta charset = "UTF-8" > < meta http - equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" > < meta name = "renderer" content = "webkit" > < title > RTMP 播放协议 < / title > < style > body { margin : 0 ; } #myPlayer { max - width : 1200 px ; width : 100 % ; } < / style > < / head > < script > < / script > < body > < script src = "https://open.ys7.com/sdk/js/2.0/ezuikit.js" > < / script > < video id = "myPlayer" controls playsInline webkit - playsinline autoplay > < source src = "rtmp://rtmp.open.ys7.com/openlive

关于直播的问题

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-11 20:54:19
问题描述: 想用html5+MSE+Websocket+PHP做视频直播的,搜索一番资料之后MSE这块搞明白了,关于服务端音视频流处理这块搞不懂。有的说用nginx+rtmp做推流服务器,还说用ffmpeg+rtmp处理解编码等等。我想问的是不用rtmp协议,直接用http协议+MSE+Websocket+PHP能实现么,给个大概思路。 来源: CSDN 作者: qq_35162266 链接: https://blog.csdn.net/qq_35162266/article/details/104267243

Windows下利用nginx流媒体服务器rtmp推拉流测试

时光怂恿深爱的人放手 提交于 2020-02-05 15:36:21
转载自 Hello爱微玩-在家搭个直播平台:Windows下利用nginx流媒体服务器rtmp推拉流测试 一、nginx的安装配置 在 http://nginx-win.ecsds.eu/download/ 中下载nginx 1.7.11.3 Gryphon.zip并解压。 在解压好的nginx 1.7.11.3 Gryphon目录下新建三个文件夹:m3u8File、rec、vod 进入nginx 1.7.11.3 Gryphon文件夹的conf目录下,新建一个文件“nginx.conf”,复制下面的内容进去并保存: worker_processes 1; #Nginx进程数,建议设置为等于CPU总核数 events { worker_connections 1024; #工作模式与连接数上限 } rtmp_auto_push on; #RTMP服务 rtmp{ server{ listen 1935; #服务端口 chunk_size 4096; #数据传输块的大小 application vod{ play ./vod; #视频文件存放位置 } application live{ live on; #开启直播 hls on; #开启hls直播。这个参数把直播服务器改造成实时回放服务器 #wait_key on; #对视频切片进行保护,这样就不会产生马赛克了 hls_path .

关于视频的一些概念

南楼画角 提交于 2020-02-05 00:42:18
http://www.samirchen.com/video-concept/ 关于视频的一些概念 2016-01-28 视频相关概念 视频文件格式 文件格式这个概念应该是我们比较熟悉的,比如我们常见的 Word 文档的文件格式是 .doc ,JPG 图片的文件格式是 .jpg 等等。那对于视频来说,我们常见的文件格式则有: .mov 、 .avi 、 .mpg 、 .vob 、 .mkv 、 .rm 、 .rmvb 等等。文件格式通常表现为文件在操作系统上存储时的后缀名,它通常会被操作系统用来与相应的打开程序关联,比如你双击一个 test.doc 文件,系统会调用 Word 去打开它。你双击一个 test.avi 或者 test.mkv 系统会调用视频播放器去打开它。 同样是视频,为什么会有 .mov 、 .avi 、 .mpg 等等这么多种文件格式呢?那是因为它们通过不同的方式实现了视频这件事情,至于这个不同在哪里,那就需要了解一下接下来要说的「视频封装格式」这个概念了。 视频封装格式 视频封装格式,简称视频格式,相当于一种储存视频信息的容器,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相应的视频文件格式。 下面我们就列举一些文件封装格式: AVI 格式 ,对应的文件格式为