使用 ffmpeg 从网络摄像头生成 RTSP
Using ffmpeg to generate RTSP from webcam
我想获取摄像头视频流并在 Windows 上使用 RTSP 进行广播。
我可以用
播放相机视频
> ffplay -f dshow -i "HP HD Webcam"
但是如果我尝试使用
开始直播
> ffmpeg -f rtsp -i video="HP HD Webcam" rtsp://localhost:8888/live.sdp
流没有开始。控制台显示
ffmpeg version ...
configuration: ...
libavutil 55. 6.100 / 55. 6.100
libavcodec 57. 15.100 / 57. 15.100
libavformat 57. 14.100 / 57. 14.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 15.100 / 6. 15.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
如果我使用 ctrl+c 打破它,会显示错误
video=HP HD Webcam: Immediate exit requested
如何使用 ffmpeg 将相机正确地流式传输到 RTSP?
ffmpeg
不替代 RTSP 服务器,rtsp
只是一个 muxer/demuxer。当您将它用于输出时,它会发送带有 RTSP ANNOUNCE
的流。所以你需要一个支持它的服务器 运行 on 8888. documentation mentions Darwin Streaming Server and revmischa/rtsp-server.
首先,您必须创建一个 RTSP 服务器,然后将视频流从网络摄像头推送到 RTSP 服务器。服务器启动后,从 RTSP 服务器读取流。
按照下面的步骤Ubuntu:
打开终端并执行以下命令
$ sudo apt-get install ffmpeg
$ sudo apt-get install v4l-utils
第 1 步: 打开一个新终端并
下载 SimpleRTSP 服务器包:
$ wget https://github.com/aler9/rtsp-simple-server/releases/download/v0.16.0/rtsp-simple-server_v0.16.0_linux_amd64.tar.gz
提取下载的包:
$ tar -xzvf rtsp-simple-server_v0.16.0_linux_amd64.tar.gz
第 2 步: 使用以下命令检查您的内部 IP address:
$ ifconfig
复制 IP 地址,例如。 192.168.XXX.XXX
第 3 步:现在,启动 RTSP 服务器
$ rtspServer=192.168.XXX.XXX:rtsp://192.168.XXX.XXX:8554/webCamStream ./rtsp-simple-server
(在上面的命令中添加你的IP地址)
第 4 步:打开一个新终端
$ v4l2-ctl --list-devices
(确保您已插入并安装网络摄像头 > sudo apt-get install v4l-utils)
这将列出所有插入系统的相机设备
例如
UVC Camera (046d:0825) (usb-0000:00:14.0-1):
/dev/video0
/dev/video1
第 5 步: 您现在可以将视频流从网络摄像头推送到 RTSP 服务器:
$ sudo ffmpeg -f v4l2 -framerate 24 -video_size 480x480 -i /dev/video0 -f rtsp -rtsp_transport tcp rtsp://192.168.XXX.XXX:8554/webCamStream
(在上面的命令中添加您的 IP 地址、端口和流名称)
第 6 步:最后一步是检查和查看您的 RTSP 提要:
打开一个新终端并使用以下命令检查
$ ffplay "rtsp://192.168.XXX.XXX:8554/webCamStream"
我想获取摄像头视频流并在 Windows 上使用 RTSP 进行广播。
我可以用
播放相机视频> ffplay -f dshow -i "HP HD Webcam"
但是如果我尝试使用
开始直播> ffmpeg -f rtsp -i video="HP HD Webcam" rtsp://localhost:8888/live.sdp
流没有开始。控制台显示
ffmpeg version ...
configuration: ...
libavutil 55. 6.100 / 55. 6.100
libavcodec 57. 15.100 / 57. 15.100
libavformat 57. 14.100 / 57. 14.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 15.100 / 6. 15.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
如果我使用 ctrl+c 打破它,会显示错误
video=HP HD Webcam: Immediate exit requested
如何使用 ffmpeg 将相机正确地流式传输到 RTSP?
ffmpeg
不替代 RTSP 服务器,rtsp
只是一个 muxer/demuxer。当您将它用于输出时,它会发送带有 RTSP ANNOUNCE
的流。所以你需要一个支持它的服务器 运行 on 8888. documentation mentions Darwin Streaming Server and revmischa/rtsp-server.
首先,您必须创建一个 RTSP 服务器,然后将视频流从网络摄像头推送到 RTSP 服务器。服务器启动后,从 RTSP 服务器读取流。 按照下面的步骤Ubuntu:
打开终端并执行以下命令
$ sudo apt-get install ffmpeg
$ sudo apt-get install v4l-utils
第 1 步: 打开一个新终端并 下载 SimpleRTSP 服务器包:
$ wget https://github.com/aler9/rtsp-simple-server/releases/download/v0.16.0/rtsp-simple-server_v0.16.0_linux_amd64.tar.gz
提取下载的包:
$ tar -xzvf rtsp-simple-server_v0.16.0_linux_amd64.tar.gz
第 2 步: 使用以下命令检查您的内部 IP address:
$ ifconfig
复制 IP 地址,例如。 192.168.XXX.XXX
第 3 步:现在,启动 RTSP 服务器
$ rtspServer=192.168.XXX.XXX:rtsp://192.168.XXX.XXX:8554/webCamStream ./rtsp-simple-server
(在上面的命令中添加你的IP地址)
第 4 步:打开一个新终端
$ v4l2-ctl --list-devices
(确保您已插入并安装网络摄像头 > sudo apt-get install v4l-utils) 这将列出所有插入系统的相机设备 例如
UVC Camera (046d:0825) (usb-0000:00:14.0-1):
/dev/video0
/dev/video1
第 5 步: 您现在可以将视频流从网络摄像头推送到 RTSP 服务器:
$ sudo ffmpeg -f v4l2 -framerate 24 -video_size 480x480 -i /dev/video0 -f rtsp -rtsp_transport tcp rtsp://192.168.XXX.XXX:8554/webCamStream
(在上面的命令中添加您的 IP 地址、端口和流名称)
第 6 步:最后一步是检查和查看您的 RTSP 提要: 打开一个新终端并使用以下命令检查
$ ffplay "rtsp://192.168.XXX.XXX:8554/webCamStream"