ffmepg,视频流,Darwin Streaming Server, EasyDarwin

昨天产品说要做短视频,吓我一跳~~~

前几天看文章,说有几个开源软件喂饱了一大众软件公司的帖子,回头转贴一下。

结合这个,也学习了一些视频相关的东西。

 

协议:

https://zh.wikipedia.org/wiki/%E5%8D%B3%E6%99%82%E4%B8%B2%E6%B5%81%E5%8D%94%E5%AE%9A

实时流协议 维基百科,自由的百科全书 跳到导航跳到搜索 实时流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。 该协议用于创建和控制终端之间的媒体会话。 媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流。 流数据本身的传输不是RTSP的任务。大多数RTSP服务器使用实时传输协议(RTP)和实时传输控制协议(RTCP)结合媒体流传输。 然而,一些供应商实现专有传输协议。例如,RealNetworks公司的RTSP服务器软件也使用RealNetworks的专有实时数据传输(RDT)。 RTSP由RealNetworks公司,Netscape公司 [1] 和哥伦比亚大学开发,第一稿于1996年提交给IETF[2]。 由互联网工程任务组(IETF)的多方多媒体会话控制工作组(MMUSIC WG)进行了标准化,并于1998年发布为RFC 2326。 [3] RTSP 2.0 于2016年发布为RFC 7826,作为RTSP 1.0的替代品。 RTSP 2.0基于RTSP 1.0,但除了基本的版本协商机制之外不向后兼容。 协议指令 虽然在某些方面与HTTP类似,RTSP定义了控制多媒体播放控制顺序。 虽然HTTP是无状态的,但RTSP具有状态; 当需要跟踪并发会话时使用标识符。像HTTP一样,RTSP使用TCP来维护端到端连接, 而大多数RTSP控制消息由客户端发送到服务器,一些命令沿着另一个方向(即从服务器到客户端)传播。 这里提供了基本的RTSP请求。 一些典型的HTTP请求,如OPTIONS请求也可用。 默认传输端口为554[3] ,该端口同时应用于TCP和UDP,但后者很少用于控制请求。

https://www.leixue.com/ask/what-is-rtsp
RTSP是什么 FanlyFanly 问答
2020-09-21 04:42:41阅读(1609) 实时流协议(RTSP)是一种网络应用协议,专为娱乐和通信系统使用,以控制流媒体服务器。
该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便实时控制服务器到客户端或客户端到服务器的媒体流。 实时流协议(RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。
该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布 VCR 命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端或从客户端到服务器的媒体流。 RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是 TCP
/IP 协议体系中的一个应用层协议,
由哥伦比亚大学、网景和 RealNetworks 公司提交的 IETF RFC 标准。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。
RTSP 在体系结构上位于 RTP 和 RTCP 之上,它使用 TCP 或 UDP 完成数据传输。HTTP 与 RTSP 相比,HTTP 请求由客户机发出,服务器作出响应;
使用 RTSP 时,客户机和服务器都可以发出请求,即 RTSP 可以是双向的。 RTSP 是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,
服务器端可以自行选择使用 TCP 或 UDP 来传送串流内容,它的语法和运作跟 HTTP
1.1 类似,但并不特别强调时间同步,所以比较能容忍网络延迟。
而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。
因为与 HTTP1.1 的运作方式相似,所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于 RTSP,并因 RTSP 具有重新导向功能,可视实际负载情况来转换提供服务的服务器,
以避免过大的负载集中于同一服务器而造成延迟。 其是 TCP
/IP 协议体系中的一个应用层协议,该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。
RTSP 在体系结构上位于 RTP 和 RTCP 之上,它使用 TCP 或 UDP 完成数据传输。HTTP 与 RTSP 相比,
HTTP 传送 HTML,而 RTSP 传送的是多媒体数据。 RTSP 是基于文本的协议,采用 ISO10646 字符集,使用 UTF
-8 编码方案。
行以 CRLF 中断,包括消息类型、消息头、消息体和消息长。
但接收者本身可将 CR 和 LF 解释成行终止符。基于文本的协议使其以自描述方式增加可选参数更容易,接口中采用 SDP 作为描述语言。 RTSP 是应用级协议,控制实时数据的发送。
RTSP 提供了一个可扩展框架,使实时数据,如音频与视频的受控点播成为可能。数据源包括现场数据与存储在剪辑中数据。
该协议目的在于控制多个数据发送连接,为选择发送通道,如 UDP、组播 UDP 与 TCP,提供途径,并为选择基于 RTP 上发送机制提供方法。 RTSP 建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流交换是可能的,通常它本身并不发送连续流。
换言之,RTSP 充当多媒体服务器的网络远程控制。RTSP 连接没有绑定到传输层连接,如 TCP。
在 RTSP 连接期间,RTSP 用户可打开或关闭多个对服务器的可传输连接以发出 RTSP 请求。
此外,可使用无连接传输协议,如 UDP。RTSP 流控制的流可能用到 RTP,但 RTSP 操作并不依赖用于携带连续媒体的传输机制。 协议支持的操作如下: (
1)从媒体服务器上检索媒体:用户可通过 HTTP 或其它方法提交一个演示描述。如演示是组播,演示式就包含用于连续媒体的组播地址和端口。
如演示仅通过单播发送给用户,用户为了安全应提供目的地址。
2)媒体服务器邀请进入会议:媒体服务器可被邀请参加正进行的会议,或回放媒体,或记录其中一部分,或全部。
这种模式在分布式教育应用上很有用,会议中几方可轮流按远程控制按钮。
3)将媒体加到现成讲座中:如服务器告诉用户可获得附加媒体内容,对现场讲座显得尤其有用。
如 HTTP/1.1 中类似,RTSP 请求可由代理、通道与缓存处理。


 

C->S: ANNOUNCE rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 7
      Date: 23 Jan 1997 15:35:06 GMT
      Session: 12345678
      Content-Type: application/sdp
      Content-Length: 332

      v=0
      o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4
      s=SDP Seminar
      i=A Seminar on the session description protocol
      u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
      e=mjh#isi.edu (Mark Handley)
      c=IN IP4 224.2.17.12/127
      t=2873397496 2873404696
      a=recvonly
      m=audio 3456 RTP/AVP 0
      m=video 2232 RTP/AVP 31

S->C: RTSP/1.0 200 OK
      CSeq: 7
TEARDOWN 停止发布流请求
TEARDOWN 请求用于终止会话。它停止所有媒体流,并释放所有与会话相关的数据在服务器上。
C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 8
      Session: 12345678

S->C: RTSP/1.0 200 OK
      CSeq: 8
GET_PARAMETER 获取参数请求
GET_PARAMETER 请求检索在URI中指定的呈现或流的参数的值。答复和回复的内容留给实施。没有实体的GET_PARAMETER可能用于测试客户端或服务器活动(“ping”)。
S->C: GET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 9
      Content-Type: text/parameters
      Session: 12345678
      Content-Length: 15

      packets_received
      jitter

C->S: RTSP/1.0 200 OK
      CSeq: 9
      Content-Length: 46
      Content-Type: text/parameters

      packets_received: 10
      jitter: 0.3838
SET_PARAMETER 设置参数请求
SET_PARAMETER 此方法请求设置由URI指定的演示文稿或流的参数值。
C->S: SET_PARAMETER rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 10
      Content-length: 20
      Content-type: text/parameters

      barparam: barstuff

S->C: RTSP/1.0 451 Invalid Parameter
      CSeq: 10
      Content-length: 10
      Content-type: text/parameters

      barparam
REDIRECT 重定向请求
REDIRECT 请求通知客户端它必须连接到另一个服务器位置。它包含强制性头文件位置,表示客户端应发出该URL的请求。它可能包含参数Range,它指示重定向何时生效。如果客户端希望继续发送或接收此URI的媒体,则客户端必须向指定的主机发出针对当前会话的TEARDOWN请求和新会话的SETUP。
S->C: REDIRECT rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 11
      Location: rtsp://bigserver.com:8001
      Range: clock=19960213T143205Z-
嵌入式(交错式)二进制数据
某些防火墙设计和其他情况可能会强制服务器交叉RTSP方法和流数据。通常应避免这种交错,除非有必要,因为它会使客户端和服务器操作复杂化,并增加额外的开销。交叉二进制数据只能在RTSP通过TCP传输时使用。诸如RTP数据包之类的流数据由ASCII码符号(24个十六进制)封装,后跟一个字节的信道标识符,后面是封装二进制数据的长度,以二进制字节为单位,以网络字节顺序排列。流数据紧随其后,没有CRLF,但包括上层协议头。每个$块只包含一个上层协议数据单元,例如一个RTP包。
C->S: SETUP rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 3
      Transport: RTP/AVP/TCP;interleaved=0-1

S->C: RTSP/1.0 200 OK
      CSeq: 3
      Date: 05 Jun 1997 18:57:18 GMT
      Transport: RTP/AVP/TCP;interleaved=0-1
      Session: 12345678

C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0
      CSeq: 4
      Session: 12345678

S->C: RTSP/1.0 200 OK
      CSeq: 4
      Session: 12345678
      Date: 05 Jun 1997 18:59:15 GMT
      RTP-Info: url=rtsp://example.com/media.mp4;
      seq=232433;rtptime=972948234

S->C: $\000{2 byte length}{"length" bytes data, w/RTP header}
S->C: $\000{2 byte length}{"length" bytes data, w/RTP header}
S->C: $\001{2 byte length}{"length" bytes  RTCP packet}

速率适配[编辑]

使用RTP和RTCP的RTSP允许实现速率适配。[4]

 

已经成功实现的[编辑]

服务端[编辑]

客户端[编辑]

//////////////////////////////////////////////////////////////////////////////////////////////////////////

 

如何实现将MP4文件推送到流媒体开源平台EasyDarwin以实现直播流分发及录像机存储?

https://blog.csdn.net/easydarwin/article/details/108879744


EasyDarwin
https://github.com/EasyDarwin/EasyDarwin/releases

EasyDarwin简单搭建
http://wjhsh.net/zgqbky-p-12177207.html

ffmepg
https://ffmpeg.org/download.html#build-linux

 

 

 

 

 

 

 

实时流协议[编辑]

维基百科,自由的百科全书
 
 
 
跳到导航跳到搜索

实时流协议(Real Time Streaming Protocol,RTSP)是一种网络应用协议,专为娱乐和通信系统的使用,以控制流媒体服务器。该协议用于创建和控制终端之间的媒体会话。媒体服务器的客户端发布VCR命令,例如播放,录制和暂停,以便于实时控制从服务器到客户端(视频点播)或从客户端到服务器(语音录音)的媒体流。

流数据本身的传输不是RTSP的任务。大多数RTSP服务器使用实时传输协议(RTP)和实时传输控制协议(RTCP)结合媒体流传输。然而,一些供应商实现专有传输协议。例如,RealNetworks公司的RTSP服务器软件也使用RealNetworks的专有实时数据传输(RDT)。

RTSP由RealNetworks公司,Netscape公司 [1] 和哥伦比亚大学开发,第一稿于1996年提交给IETF[2]。由互联网工程任务组(IETF)的多方多媒体会话控制工作组(MMUSIC WG)进行了标准化,并于1998年发布为RFC 2326。[3] RTSP 2.0 于2016年发布为RFC 7826,作为RTSP 1.0的替代品。RTSP 2.0基于RTSP 1.0,但除了基本的版本协商机制之外不向后兼容。

posted @ 2022-09-01 09:39  multitude  阅读(290)  评论(0编辑  收藏  举报