首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rtsp流捕获

rtsp流捕获
EN

Stack Overflow用户
提问于 2011-10-28 16:59:24
回答 6查看 43.7K关注 0票数 24

我正在寻找一些通用的方法来转储rtsp流。我想弄清楚,一些rtsp流运行良好,服务器正在发送一些可观看的视频。

openRTSP

起初,谷歌推荐我使用openRTSP工具。

代码语言:javascript
运行
复制
 openRTSP -4 ${stream_link} > ${output_file}

但是该工具转储的输出视频文件并不是真正正确的。视频解码器(ffdec)返回许多错误,比如“未能解码视频数据包”和"h264 no frame!",这些错误不适合我。

ffmpeg

然后我尝试用ffmpeg工具转储rtsp流。

代码语言:javascript
运行
复制
ffmpeg -loglevel debug -i "${stream_link}" -s 640x480 -vcodec copy -acodec copy -y ${output_file}

但是,流处理经常被错误所打断:

代码语言:javascript
运行
复制
Application provided invalid, non monotonically increasing dts to muxer in stream 0: 730672 >= 730672
av_interleaved_write_frame(): Invalid argument

我正在尝试使用--fflags igndts,但是ffmpeg并没有忽略这些错误。这没有任何意义,因为这个错误实际上意味着音频和视频流是异步发送的。最糟糕的是,被中断的转储导致的转储文件也是不正确的。Ffdec返回一些错误:

代码语言:javascript
运行
复制
ERROR [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
ERROR [ffdec] av_open_input_file: Operation not permitted

在我搜索了一杯好东西之后,我发现它真的很旧了。

mplayer

而不是我尝试在LIVE_555库中使用mplayer。

代码语言:javascript
运行
复制
mplayer -noframedrop -dumpfile ${output_file} -dumpstream ${stream_link}

但我也犯了一些错误。

代码语言:javascript
运行
复制
Stream not seekable!
Core dumped ;)

问题

我想我做错了什么。这听起来真的很荒谬,没有办法将rtsp流保存在正确和可播放的视频文件中。

也许还有其他一些工具可以帮助完成这项任务?事实上,我将感谢任何对各种语言和语言的建议。但是这个过程应该是自动的,而且应该有cli。

精化

关于50%的实验,我在本地主机上做了一些类似rtsp广播的vlc实验。这是一个手册,我试着跟随它。

我有非常新鲜和最新的x264支持的ffmpeg,这是我通过有用的线程安装的。

EN

回答 6

Stack Overflow用户

发布于 2011-10-31 12:22:00

您尝试过vlc来保存rtsp流吗?它对我有用,我试过用图形界面。但是它也应该在命令行中工作。

票数 10
EN

Stack Overflow用户

发布于 2014-10-08 00:06:32

ffmpeg + wallclock_as_timestamps工作

ffmpeg是实现目标的最简单方法,但以下是一些重要的注意事项:

首先,我建议您获得最后一个版本(2.4.x,而不是Ubuntu附带的1.2.x )。你可以从https://www.ffmpeg.org/download.html那里得到

你还是会得到

代码语言:javascript
运行
复制
Application provided invalid, non monotonically increasing dts to muxer in stream 0: 730672 >= 730672
av_interleaved_write_frame(): Invalid argument error

错误,但你可以摆脱它。这主要是因为FPS (每秒帧)在IP相机上不断变化,这取决于连接的质量。这里有两个对我有用的解决方案:

use_wallclock_as_timestamps解决方案1 =使用选项,因此您的命令如下

代码语言:javascript
运行
复制
ffmpeg -use_wallclock_as_timestamps 1 -i rtsp://myip:554/mpeg4 -c copy myrecord.avi

赞成= CPU使用率低+高质量的录音,因为没有任何代码转换/ CONS =稍大的文件(~6 6Mb/分钟)

Solution2 =删除命令中的"-acodec复制-vcodec复制“选项。简单命令

代码语言:javascript
运行
复制
ffmpeg -i rtsp://myip:554/mpeg4 myrecord.avi

会成功的。赞成=小文件(~1.2Mb /分钟)/ CONS =高CPU使用率(在我的计算机上为6%),因为我认为它正在将代码转换为默认的编解码器+质量较差的记录。

希望能帮上忙!

票数 6
EN

Stack Overflow用户

发布于 2011-11-14 05:01:55

德米特里,你应该试试ErlyVideo服务器。它可以捕获RTSP-流量,并将其存储在多媒体文件中,可与媒体播放器一起播放。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7932389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档