目录
1、什么是流媒体协议?
什么是流媒体协议?流媒体协议是通过互联网在设备之间传输视频或音频内容的标准化方法。
视频流协议将视频或音频内容的“块”从一台设备发送到另一台设备。在播放器设备上将这些“块”转换为可重播内容的方法称为“重组”方法。
对于成功的过程,终端设备必须支持发送方使用的协议。否则,将无法播放广播。
2、什么是RTSP?
实时流协议-维基百科
该实时流协议(RTSP)是一种网络控制协议,专为娱乐和通信系统的使用,以控制流媒体 服务器。该协议用于建立和控制端点之间的媒体会话。媒体服务器的客户端发出播放、录制和暂停等命令,以便实时控制从服务器到客户端(视频点播)或从客户端到服务器(录音)的媒体流。
实时流协议 (RTSP) 建立和控制单个或多个时间同步的连续媒体(如音频和视频)流。尽管可以将连续媒体流与控制流交织在一起,但它本身通常不会传送连续流。换句话说,RTSP 充当多媒体服务器的“网络远程控制”。
当用户使用 RTSP 从 IP 摄像机启动视频流时,设备会向流媒体服务器发送 RTSP 请求。网络摄像机和服务器之间的设置完成后,可以使用 RTP 传输视频和音频数据。
RTSP 是一种应用层协议,它与媒体服务器通信以创建会话并发送“暂停”和“播放”等命令,RTSP建立并控制一个或多个媒体流,本身通常不发送媒体流。流数据的传输本身不是 RTSP 的任务。大多数 RTSP 服务器使用实时传输协议(RTP) 和实时控制协议(RTCP) 进行媒体流传输。
RTSP 是 IP 摄像机的首选协议,大多数IP 摄像机使用 RTSP 协议将广播捕获到媒体服务器、IP 摄像机用于大多数监控、闭路电视、会议视频技术 、直播等。
3、RTSP技术规格
音频编解码器:AAC、AAC-LC、HE-AAC+ v1 & v2、MP3、Speex、Opus、Vorbis
视频编解码器:H.265(预览)、H.264、VP9、VP8
播放兼容性:不受广泛支持且很少用于播放(Quicktime Player 和其他 RTSP/RTP 兼容播放器、VideoLAN VLC 媒体播放器、3Gpp 兼容移动设备)
优点:低延迟且在 IP 摄像机中无处不在
缺点:未针对体验质量和可扩展性进行优化
延迟:2 秒
变体格式:RTP、RTCP(实时控制协议)和 RTSP 的整个堆栈通常称为 RTSP
4、RTSP 如何工作?
RTSP 在概念上在功能上与 HTTP 相似,并且在最初开发时很容易与现有的 HTTP 网络兼容。
RTSP 被描述为媒体服务器的“网络远程控制”。它旨在控制流而无需下载任何文件。当视频流开始时,使用该协议的设备会向启动设置过程的媒体服务器发送 RTSP 请求。
RTSP 还支持多种控制请求操作(也称为“命令”),例如播放、暂停、设置等。(我将在下一节中为您提供一些示例请求。)第一个请求还必须通知客户端可用的选项通过“选项”命令。之后,用户可以观看、排序或关闭流。RTSP 保持与 TCP 的端到端连接,并通过此稳定连接实现高吞吐量,而无需任何本地下载或缓存。
该协议不支持内容加密或丢失数据包的重传,因为 RTSP 连接到专用服务器进行流传输,并依赖 RTP 传输真实媒体。这些限制以及扩展问题导致总体 RTSP 使用率下降
5、与其他协议区别?
HTTP是文本协议、RTSP是流媒体协议
HTTP 是无状态的,而 RTSP 有状态;当需要跟踪并发会话时使用标识符。
RTSP 使用 TCP 来维持端到端的连接,虽然大多数 RTSP 控制消息由客户端发送到服务器,但一些命令在另一个方向(即从服务器到客户端)传播。即RTSP可以是双向的。
它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。
6、怎么制作rtsp流
一、安装live555MediaServer搭建流媒体服务器
# 安装 gcc编译器
yum install gcc-c++
# 安装live555
wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz
tar -xzvf live555-latest.tar.gz
cd live
./genMakefiles linux-64bit
make
# 安装成功时,会在当前目录生成一个mediaServer文件夹
cd mediaServer
# 启动live555服务器
./live555MediaServer
# 请先打开配置防火墙打开端口 554 和 8000 ,如果是云服务器,请注意云服务器供应商是否有安全组等设置,也需要到安全组配置端口的。
下面上传文件到 live555MediaServer 下级目录 我创建了个passrecord, 上传了个一个 test.mp4 到 /root/rtsp/live/mediaServer/passrecord
那么,使用http协议访问的地址就行 http://你的ip:8000/文件名 例:http://127.0.0.1:8000/passrecord.mp4;
使用rtsp协议访问的地址 http://你的ip/文件名 例:rtsp://127.0.0.1/test.mp4
二、 ffmpeg
服务器需要安装FFmpeg工具,对离线视频进行转码
将下载的压缩包通过xftp等工具或者scp的方法上传至服务器。 ffmpeg-snapshot.tar.bz2
使用压缩命令压缩源码包。压缩命令如下:tar -jxvf ffmpeg-snapshot.tar.bz2
进入源码包文件夹,执行配置文件。命令如下:./configure --disable-x86asm
编译源码,命令如下:make
等待编译完成后可以在文件夹中看到ffmpeg的执行文件。
部署完ffmpeg工具之后,要想直接在命令行中使用ffmpeg命令,需要将ffmpeg可执行文件添加到/usr/local/sbin下,方法是可以将可执行文件ffmpeg通过软连接形式添加到/usr/local/sbin下,方法是进入到/usr/local/sbin 下,执行ln -s ~/ffmpeg/ffmpeg .
三、转换离线视频
1、离线视频上传至/root/rtsp/live/mediaServer/passrecord 目录下;
2、对离线视频进行转码
MP4→TS
ffmpeg -i xxxx.mp4 -c copy -bsf h264_mp4toannexb xxxx.ts
ffmpeg -i rtsp2.mp4 -codec copy -bsf h264_mp4toannexb a.ts
四、测试使用
1、启动live555工具
cd /root/rtsp/live/mediaServer/
./live555MediaServer
后台启动 :sudo ./live555MediaServer & (此服务默认会占用服务器的80和554端口,所以目前不能在盘古的机器上运行此工具,不然容易导致端口冲突);
查看此工具的进程 sudo lsof -i:554
停止live555工具的命令 ps -ef | grep live555 | awk ‘{print $2}’ | xargs sudo kill -15
2、打开vlc客户端播放
获取流的地址 ,格式为 http://127.0.0.1:8000/passrecord.mp4; 协议名://ip:554/ts文件地址
打开网络-播放
3、至此为止,离线视频转为rtsp流就完成了,然后就只需要将此rtsp流添加至盘古就可以对其进行分析(此方法转换的rtsp流会循环播放,如果不加干预就会重复分析视频)