创建 RTSP RTMP 视频源(Windows/Linux)

1. 前言

由于项目需要实现 视频识别图像分类,网上能用的视频流又很少,所以需要自己搭建视频源进行本地测试。

本文记录在 Windows 以及 Linux 系统分别创建 RTSP、RTMP 视频源 进行测试。

2. 准备

2.1 视频

我们要准备好一份 mp4 格式的视频,循环播放形成一个持续进行的视频流。

项目需求原因,而且我对于视频处理软件之类的八窍已通七窍,所以这里我是用了一个 图片在线生成视频 的网站 https://clideo.com/video-maker
可以选取多张图片(最好不要过百)、每张图片的时间间隔、是否渐入渐出、设置背景音乐,生成视频的过程还是比较慢的,需要耐心等待。

2.2 软件/包

2.2.1 VLC 播放器

VLC是有 Windows、Linux、MacOS、Android等版本的。
但是我的Linux服务器系统是纯命令行的,所以只使用了 Windows 版本的进行测试,操作很简单,下载安装即可。
创建 RTSP RTMP 视频源(Windows/Linux)_第1张图片
它的使用也是比较简单的,点击媒体 -> 打开网络串流 -> 输入url -> 点击播放 即可。
创建 RTSP RTMP 视频源(Windows/Linux)_第2张图片

2.2.2 FFMPEG

  • Windows 版本的可以去 https://www.gyan.dev/ffmpeg/builds/ 下载,使用 7-Zip 解压,将bin目录添加到环境变量 Path 中。
  • Linux 根据系统不同,可以直接使用 apt-get 或者 yum 安装。

可以命令行输入 ffmpeg -version 确认是否安装成功。
创建 RTSP RTMP 视频源(Windows/Linux)_第3张图片
ffmpeg 的部分参数:

  • -i: 设定输入流
  • -f 设定输出格式(format)
  • -stream_loop 循环几次,-1为无限循环
  • -re 以本机帧速率读取输入,相当于设置 -readrate 1
  • -c 编解码器, copy表示使用跟原视频一样的视频编解码器

具体的参数意义可以参考FFMPEG 官方文档。

3. 实现

3.1 RTSP

这个在网上找了很多的解决方案,这里只介绍最后使用的方案。
也就是Github上的 rtsp-simple-server, 我们可以直接阅读它的 README.md 文件。
这里也会把部分内容粘贴出来.

3.1.1 Windows

我们直接下载最新的Windows release包。
创建 RTSP RTMP 视频源(Windows/Linux)_第4张图片
下载之后解压,有一个可执行文件,我们直接运行即可,这样本地的rtsp服务器就已经启动了。
解压后目录结构
创建 RTSP RTMP 视频源(Windows/Linux)_第5张图片
可以看到,这个工具是支持 RTSP、RTMP、HLS的,只是端口不同,需要注意。

之后,再使用 FFMPEG 推送视频流到服务器,使用 stream_loop 让视频循环播放。

ffmpeg -re -stream_loop -1 -i test.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream

创建 RTSP RTMP 视频源(Windows/Linux)_第6张图片
执行上面的命令后,可以在终端窗口看到,视频流稳定推送,以及推送的帧、帧率、时间、速度等信息:
创建 RTSP RTMP 视频源(Windows/Linux)_第7张图片
而在另一边,RTSP服务器也收到了FFMPEG的推送,从打印的日志可以看到 类别为 RTSP,路径为 mystream。
创建 RTSP RTMP 视频源(Windows/Linux)_第8张图片

这样视频流就创建好了,url为 rtsp://localhost:8554/mystream (注意这里 rtsp://localhost:8554/ 是固定的,端口为rtsp服务器的端口号,可以在 yml 文件中修改,后面的 mystream 由自己设置)。

我们可以下载 VLC播放器 测试我们的视频流。

3.1.2 Linux

和Windows端相同,只不过下的包不一样,需要下载对应架构的Linux版本的release包,我的服务器为 x86_64 的,所以选择 amd64 版本。
创建 RTSP RTMP 视频源(Windows/Linux)_第9张图片

3.2 RTMP

RTMP 视频流的创建与 RTSP 基本相同,只有 ffmpeg 命令需要修改,改为以下形式:

ffmpeg -re -stream_loop -1 -i test.mp4 -c copy -f flv rtmp://localhost:1935/mystream

修改 格式为 hlv,修改url为 rtmp协议,端口为 1935

4. 参考

  1. aler9/rtsp-simple-server - Github
  2. ffmpeg 官网

你可能感兴趣的:(AI,音视频,linux,windows)