您的位置:

使用FFmpeg推流RTSP

一、安装FFmpeg

要使用FFmpeg推流RTSP,需要首先安装FFmpeg。这里我们提供一种在Ubuntu上安装FFmpeg的方法:

sudo add-apt-repository ppa:jonathonf/ffmpeg-4 
sudo apt-get update 
sudo apt-get install ffmpeg

执行完以上命令后,系统会自动下载安装FFmpeg.

二、推流本地文件

使用FFmpeg向RTSP服务器推送本地文件是非常简单的。下面是将本地文件推流到RTSP的命令行示例:

ffmpeg -re -i test.mp4 -f rtsp rtsp://localhost:5554/live.sdp

其中,test.mp4是要推流的本地文件名,localhost:5554是RTSP服务器地址和端口,live.sdp是要在RTSP服务器上创建的会话名称。

在这个例子中,-re选项是告诉FFmpeg以15fps的速度进行实时流传输。-i 则是传递输入文件的路径和名称。

三、推流网络流

如果你想推送网络流,就需要使用FFmpeg的network协议。下面是推流到RTSP服务器的命令行示例:

ffmpeg -i http://localhost/stream -f rtsp rtsp://localhost:5554/live.sdp

其中,http://localhost/stream是网络流的URL。在这个示例中,我们采用的是http协议传输的网络流。

四、推流摄像头

如果你想从摄像头推送流则需要使用v4l2数据源。

使用以下命令行示例将从设备/dev/video0中的流推流到RTSP服务器:

ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -f rtsp rtsp://localhost:5554/live.sdp

在命令中,-framerate表示采集视频的帧速率,-video_size控制采集视频的尺寸,/dev/video0表示要使用的摄像头设备。

五、推流屏幕

如果想要从屏幕推流,则需要使用x11grab源。

以下是推流x11grab源到RTSP服务器的命令行示例:

ffmpeg -f x11grab -framerate 25 -video_size 1024x768 -i :0.0 -f rtsp rtsp://localhost:5554/live.sdp

在这个示例中,-i:0.0表示要捕捉的屏幕的0号显示器,-framerate是为捕捉的屏幕帧速率,-video_size控制捕捉的屏幕尺寸。

结论

通过以上示例,我们可以看到使用FFmpeg向RTSP服务器推送不同来源的流是多么简单。只需使用不同的协议和数据源,我们就可以推送本地文件,网络流,摄像头和屏幕流到RTSP服务器。