1.Ubuntu 安装FFmpeg和h264库
FFmpeg 是一个免费、开源的跨平台视频和音频流处理工具。
对于 Ubuntu系统,可以使用 apt 包管理器来安装 FFmpeg 和h264库:
sudo apt update
sudo apt install ffmpeg libx264-dev
在安装完成后,运行
ffmpeg -version
命令来检查是否安装成功。如果安装成功,将显示安装的版本号等信息。
2. 安装rtsp-simple-server
安装rtsp服务器,可以去这个链接
Ubontu20.04,选择
如果是aarch架构选择arm64v8。
下载对应编译好的文件:
打开终端直接运行:
./mediamtx
如果有报错就是端口被占用。
3. FFmpeg推流
注意:在推流之前先运行rtsp-simple-server
3.1 UDP推流
ffmpeg -re -i 1.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream
3.2 TCP推流
ffmpeg -re -i 1.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream
3.3 循环推流
ffmpeg -re -stream_loop -1 -i 1.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream
3.4 网络串流
ffmpeg -f v4l2 -i /dev/video4 -bufsize 2000k -async 1 -framerate 30 -pix_fmt yuv420p -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://192.168.182.125:8554/stream
注意:
-
-f v4l2
:指定输入格式为 Video4Linux2,这是 Linux 操作系统下视频设备的一个接口。 -
-i /dev/video4
:指定输入设备。 -
/dev/video4
:Linux 下的视频设备节点,代表一个视频捕捉设备。 -
-bufsize 2000k
:设置内部缓冲区大小为 2000k 字节,这有助于控制数据流的速率。 -
-async 1
:这个参数用于调整音视频同步。值1
表示允许小的同步调整。 -
-framerate 30
:设置视频捕捉的帧率。 -
-pix_fmt yuv420p
:指定像素格式。yuv420p
是一种视频像素格式,属于 YUV 家族。YUV
:代表颜色空间,其中 Y 是亮度(Luminance),U 和 V 是色度(Chrominance)420
:表示色度分辨率相对于亮度分辨率的比例。在这种情况下,每四个 Y 像素对应一个 U 和一个 V 像素。这意味着色度数据的分辨率是亮度数据分辨率的一半,这是压缩的关键部分。p
:表示像素格式是逐行扫描的(progressive),与隔行扫描(interlaced)相对。逐行扫描意味着视频帧是完整的一行接着一行渲染,而不是先渲染所有的奇数行,然后是偶数行。 -
-vcodec libx264
:指定视频编码器为libx264
,这是一个非常高效的视频编码库。 -
-preset:v ultrafast
:设置编码预设。ultrafast
预设意味着编码速度最快,但可能会牺牲压缩效率和质量。 -
-tune:v zerolatency
:优化编码器设置以减少延迟。这对于实时流非常有用。 -
-rtsp_transport tcp
:指定 RTSP 流的传输协议为 TCP。相比于 UDP,TCP 提供了更可靠的传输。 -
-f rtsp
:指定输出格式为 RTSP(实时流协议),用于实时视频流的传输。 -
rtsp://192.168.182.125:8554/stream
:指定 RTSP 流的输出地址和端口。这个地址是 RTSP 服务器或客户端的地址,可通过ifconfig查看。
4. 拉流
4.1 ffplay拉流显示
ffplay rtsp://192.168.182.125:8554/stream
4.2 VLC拉流显示
使用apt命令安装vlc:
sudo apt install vlc
终端输入vlc开启:
参考文章:基于FFmpeg进行rtsp推流及拉流(详细教程)_ffmpeg rtsp推流-CSDN博客ffmpeg将USB摄像头视频转发为H264的RTSP流_ffmpeg rtsp 转 h264-CSDN博客