一、安装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服务器。