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]
已经成功实现的[编辑]
服务端[编辑]
- Darwin Streaming Server: Open-sourced version of QuickTime Streaming Server maintained by Apple.
- Erlyvideo[5] has RTSP client and can restream video to other protocols.
- Feng: Lean and mean streaming server with focus on rfc compliance.
- FFmpeg: includes ffserver a GPL or LGPL RTSP streaming server.
- GStreamer based RTSP Server and client.
- Helix DNA Server: RealNetworks' streaming server. Comes in both open-source and proprietary flavors.
- Helix Universal Server: RealNetworks commercial streaming server for RTSP, RTMP, iOS, Silverlight and HTTP streaming media clients
- LEADTOOLS Media Streaming Server SDK from LEAD Technologies supports RTSP/RTP, RTSP/RTP (MPEG-2 Transport), RTSP/RTP over HTTP.
- LIVE555 liveMedia / openRTSP: Open source C++ server and client libraries used in well-known clients like VLC and mplayer.
- Managed Media Aggregation (页面存档备份,存于互联网档案馆): .NET C# RFC compliant implementation of RTSP written in completely managed code.
- Nimble Streamer supports RTSP pull and announce input with TCP interleaved playback output.
- pvServer: Formerly called PacketVideo Streaming Server, this is Alcatel-Lucent's streaming server product.
- QuickTime Streaming Server: Apple's closed-source streaming server that ships with Mac OS X Server.
- SharpRTSP (页面存档备份,存于互联网档案馆): Open sourceC# RTSP streaming server.
- ViaMotion: Integrated RTSP server for Video On Demand by Anevia
- VideoLAN: Open source media player and streaming server.
- VX30: Streaming video server and embedded Java client from Maui X-Stream.
- Windows Media Services: Microsoft streaming server previously included with Windows Server that uses RTSP modified with Windows Media extensions (页面存档备份,存于互联网档案馆)
- Wowza Streaming Engine: Multi-format streaming server for RTSP/RTP, RTMP, MPEG-TS, ICY, HTTP (HTTP Live Streaming, HTTP Dynamic Streaming, Smooth Streaming, MPEG-DASH), WebRTC
- Xenon Streaming Server: 来自Vidiator Technology(US)Inc.的移动流服务器
- YouTube: 在桌面上通过移动HTTPS版本查看网站时,可以使用流媒体选项。
客户端[编辑]
- Astra
- cURL (从7.20.0版本2010年2月9日 [6])
- FFmpeg[7]
- GStreamer
- JetAudio
- LIVE555 liveMedia / openRTSP:开源,C++服务器和客户端库,如VLC和mplayer等知名客户端使用。
- Media Player Classic
- MPlayer
- MythTV via Freebox
- Managed Media Aggregation (页面存档备份,存于互联网档案馆): .NET C# RFC compliant implementation of RTSP written in completely managed code.
- omxplayer
- QuickTime
- RealPlayer
- SharpRTSP (页面存档备份,存于互联网档案馆): 开源,C# 编写的RTSP流客户端。
- Skype
- Spotify
- VLC media player
- Winamp
- Windows Media Player
- xine
//////////////////////////////////////////////////////////////////////////////////////////////////////////
如何实现将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,但除了基本的版本协商机制之外不向后兼容。