标签: rtsp

从 IP 摄像机捕获 RTSP 流并存储

我有一些输出 RTSP (h264 mpeg4) 流的 IP 摄像机。

通过 VLC 在本地点击 URL:rtsp://192.168.0.21:554/mpeg4

我可以流式传输相机并转储到磁盘(在我的桌面上)。但是,我想将这些文件存储在我的 NAS (FreeNAS) 上。我正在寻找捕获 RTSP 流并将它们转储到磁盘的方法,但我找不到任何东西。

是否可以在 FreeBSD 或 Linux (RaspberryPi) 上捕获流并将流内容转储到 Linux 或 FreeBSD 本地磁盘上 - 最好每 30 分钟一次?

编辑:NAS 是无头的(HP N55L 或其他东西),而 RaspberryPi 也是无头的。

我已经研究过 ZoneMinder 但需要一些小东西。我希望也许使用 Motion 来检测流上的运动,但稍后会出现。

linux freenas camera video-streaming rtsp

23
推荐指数
4
解决办法
16万
查看次数

来自 HTML 页面内部的流媒体,通过示例

所以我是一名软件工程师,试图了解有关流媒体如何工作的一些细节。我花了一天的大部分时间试图了解与我的应用程序相关的各种编解码器、容器格式和流协议。到目前为止,这是我对其工作原理的理解,这很可能会被误导:

  • 流媒体实际上归结为容器格式流协议
    • 所有音频数据都被编码(通过音频编解码器)成音频比特流
    • 所有视频数据都被编码(再次通过编解码器)到视频比特流中
    • 这两个流被合并(多路复用?)到一个容器中,最终成为一个文件(如 MP4 等)
    • 一个特殊的媒体服务器然后通过一些标准的流协议,如 RTSP 将这个容器(MP4 文件或其他格式)提供给客户端(可能是在某人的浏览器中运行的 HTML5 视频播放器)
      • 在浏览器客户端的情况下,我假设浏览器本身有一个 RTSP 客户端,然后它以某种方式呈现给用户 HTML5 视频播放器
  • 可以Web服务器(例如 nginx 或 httpd)托管 MP4 文件,但由于这些服务器不是 RTSP 服务器,因此只能将 MP4请求视为下载请求,因此无法流式传输媒体文件
    • 同样,如果我要使用curl从 nginx 服务器获取文件,由于curlnginx 和 nginx都不说 RTSP,它将被视为文件下载
  • 但是,当我从流媒体服务器(VideoLAN、Red5、Wowza 等)托管 MP4 文件,并且我使用 RTSP 客户端(或任何受支持的流媒体客户端)从该服务器请求流时,只有那么是否会发生 任何实际的流式传输
    • 因此,即使 YouTube 或 Vimeo“视频”托管在 HTTP 服务器通过 HTTP(S) 提供的 HTML 页面上,我也假设这些页面上的嵌入式视频播放器(视频实际播放的地方)实际上正在启动,随后连接到流媒体服务器,并且流媒体是通过 RTSP …

vlc-media-player streaming video-streaming rtsp

12
推荐指数
1
解决办法
8428
查看次数

RTSP -> HLS 使用 FFMPEG

我正在使用 FFMPEG 将我的 rtsp 流转换为 HLS 流,以便它可以使用播放器 js 在我网站上的所有浏览器上播放。如果与 rtsp 流的互联网连接断开一分钟,我就会遇到 FFMPEG 死机的问题。有没有办法让它重新连接?我已经尝试在 -i 标志之前使用 -reconnect 标志,但我发现没有找到该命令。

ffmpeg -i rtsp://rtspstreamaddress/1 -fflags flush_packets -max_delay 2 -flags -global_header -hls_time 2 -hls_list_size 3 -vcodec copy -y /var/www/video.m3u8

然后我有一个使用 playwerjs 来显示实时流的网站。如何确保流保持正常运行,而无需手动登录 VPS 并重新运行脚本。

debian ffmpeg rtsp hls

7
推荐指数
1
解决办法
9645
查看次数

无法远程查看 IP 摄像机的 RTSP 流

我最近在远程位置完成了Zoneminder监控系统的安装。专用服务器运行 Ubuntu 14.04 LTS,当前连接到同一子网上的4 个 IP 摄像机(海康威视 DS-2CD2032-I)。路由器是摩托罗拉冲浪板 SBG6580-G228

现在,我正在尝试设置 Raspberry Pi 以从远程位置的相机流式传输视频。我的目标是使用 Zoneminder 记录事件并使用 Raspberry Pi 作为主摄像头的查看器。这是我遇到麻烦的地方。我可以远程连接到 Zoneminder 和摄像机的基于 Web 的管理页面,但由于某种原因我无法查看摄像机的 RTSP 流。

我打开了端口 554 并转发到我想要连接的相机。当我在没有登录凭据的情况下在 VLC 中输入 RTSP 地址时,系统会提示我输入这些地址,因此我知道它在某种程度上正在连接。但是,一旦我输入凭据,我就不会收到错误消息,也不会收到视频。我知道相机正在工作,因为我可以登录 Zoneminder 并查看它。

有谁知道我可能会错过什么?

vlc-media-player port-forwarding zoneminder rtsp ip-camera

6
推荐指数
2
解决办法
7万
查看次数

使用 ffmpeg 流式传输 RTSP?

所以我已经能够成功地将 RTP 视频流从我的服务器发送到 LAN 上另一个系统上的客户端并使用 ffplay 播放它。我现在想使用 RTSP 在同一网络上发送视频,以便客户端可以接收视频并可以有其他选项,例如暂停视频等。 谁能给我一个通用指南或指向我可以帮助我的资源完成我的任务?

更新:

我试过这些命令:

ffmpeg -re -i input -f rtsp -rtsp_transport tcp rtsp://localhost:8888/live.sdp

ffplay -rtsp_flags listen rtsp://localhost:8888/live.sdp
Run Code Online (Sandbox Code Playgroud)

它确实开始实时流式传输视频,但我实际上看不到任何控制媒体流的选项,例如播放、录制等!

注意:我目前用于 RTSP 的 .sdp 文件与我用于 RTP 流的文件相同。

video ffmpeg streaming rtsp

6
推荐指数
1
解决办法
3万
查看次数

我需要对 RTSP 流进行运动检测

我使用一台单独的(速度较慢的)计算机通过 VLC 进行摄像头流传输,因为我的 iMac 离窗户太远。我很好奇是否有软件可以拍摄流媒体视频并观看其运动(拍摄镜头等)。软件可以是win/lin/mac,只要它能留意外面破坏我圣诞彩灯的人就行!

video motion rtsp

5
推荐指数
1
解决办法
1万
查看次数

如何为 IP 摄像机配置端口转发

我需要为我的 IP 摄像机配置端口转发,以便我可以从互联网访问它。 UPNP我的网关不支持。

我的网络配置如下:

Gateway (Ubuntu Server 12) --- Internal network
7.8.9.10  --- 192.168.2.1  --- 192.168.2.0/24
eth1          eth0
Run Code Online (Sandbox Code Playgroud)

从我的相机设置:

Gateway HTTP/RTSP port forwarding: enabled
Run Code Online (Sandbox Code Playgroud)

我需要配置NATRTSP连接(default port 554)和摄像头的网络板(port 80):

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 554 -j DNAT --to 192.168.254.189:554
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 8000 -j DNAT --to 192.168.254.189:80
iptables -A FORWARD -p tcp -d 192.168.254.189 --dport 554 -j ACCEPT
iptables …
Run Code Online (Sandbox Code Playgroud)

iptables rtsp

5
推荐指数
1
解决办法
3581
查看次数

同步捕获多个 RTSP 流

我想同时从多达六个 IP 摄像机中捕获 h264 rtsp 流并将它们保存到单独的文件中。摄像机连接到连接到我的电脑的千兆交换机。输出视频必须同步以进行进一步处理:视频需要具有相同的持续时间、开始时间、停止时间和帧率。我正在尝试使用 ffmpeg 来完成这项任务。

显然,我的 IP 摄像机以可变帧速率提供输出。要同时以全高清格式录制多个流,我计划先复制流,然后再重新编码为恒定帧速率。这要求捕获的流携带每个帧的时间戳。

我第一次尝试记录流,比如 10 秒是:

ffmpeg -loglevel verbose -i rtsp://192.168.1.101 -i rtsp://192.168.1.102 \
-map 0:v -vcodec copy -an -t 10 -y out1.mp4 \
-map 1:v -vcodec copy -an -t 10 -y out2.mp4  
Run Code Online (Sandbox Code Playgroud)

这应该将两个流的秒数保存到 out1.mp4 和 out2.mp4,复制视频,丢弃音频,如果文件存在则覆盖。然而,结果是两个长度不同的视频,在 5 到 7 秒之间,并且它们不同步。此外,视频每隔三秒左右就会冻结一次。(详细)日志输出如下:

ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers
  built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass …
Run Code Online (Sandbox Code Playgroud)

ffmpeg video-streaming rtsp ip-camera

5
推荐指数
1
解决办法
7213
查看次数

如何从实时 rtsp 流生成多比特率的 HLS 内容?

我正在从实时 rtsp 流中生成单比特率实时 hls 内容。我正在使用以下命令

ffmpeg -v verbose -i rtsp://127.0.0.1:8080/test.sdp \
 -vcodec libx264 -acodec aac -ac 1 -strict -2 -crf 18 -profile:v baseline \
 -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header \
 -hls_time 10 -hls_list_size 3 -hls_wrap 4 -hls_flags delete_segments \
 -start_number 1 /usr/local/apache-tomcat-7.0.53/webapps/ROOT/hls/index1.m3u8
Run Code Online (Sandbox Code Playgroud)

如何修改上述 ffmpg 命令以生成多个比特率输出内容?请帮我。

ffmpeg rtsp hls

5
推荐指数
1
解决办法
2万
查看次数

使用 VLC 作为 RTSP 服务器

我想弄清楚如何使用 VLC 的服务器功能。更具体地说,如何在 RTP 流传输时导出 SDP 文件。在第 4 章中与服务器和客户端的 RTP 流示例相关的部分中给出:

vlc -vvv input_stream --sout '#rtp{dst=192.168.0.12,port=1234,sdp=rtsp://server.example.org:8080/test.sdp}'
vlc rtsp://server.example.org:8080/test.sdp
Run Code Online (Sandbox Code Playgroud)

我不太清楚如何使它真正起作用。我已经使用两个 cmd 实例为服务器和客户端尝试了这两个命令:

vlc -I rc screen:// --sout=#rtp{dst=127.0.0.1,port=4444,sdp=rtsp://localhost:8080/test.sdp} 
vlc -I rc rtsp://localhost:8080/test.sdp
Run Code Online (Sandbox Code Playgroud)

调用第二个命令会导致第一个崩溃。第二个命令显示错误消息“无法连接到 localhost:8080”。

vlc-media-player video-streaming rtsp

4
推荐指数
1
解决办法
5万
查看次数