我正在寻找一些通用的方法来转储 rtsp 流。我想弄清楚,某些 rtsp 流运行良好并且服务器正在发送一些可观看的视频。
openRTSP
一开始google推荐我openRTSP工具。
openRTSP -4 ${stream_link} > ${output_file}
但该工具转储的输出视频文件并不正确。视频解码器 (ffdec) 返回许多错误,例如“解码视频数据包失败”和“[h264] 无帧!”,这些不适合我。
ffmpeg
然后我尝试使用 ffmpeg 工具转储 rtsp 流。
ffmpeg -loglevel debug -i "${stream_link}" -s 640x480 -vcodec copy -acodec copy -y ${output_file}
但是流式处理经常被错误中断:
Application provided invalid, non monotonically increasing dts to muxer in stream 0: 730672 >= 730672
av_interleaved_write_frame(): Invalid argument
我正在尝试使用 --fflags igndts
但 ffmpeg 不会忽略这些错误。它没有任何意义,因为该错误实际上意味着音频和视频流正在异步发送。最糟糕的是,由于转储中断而导致的转储文件也不正确。 Ffdec 返回一些错误:
ERROR [mov,mp4,m4a,3gp,3g2,mj2] moov atom not found
ERROR [ffdec] av_open_input_file: Operation not permitted
经过一番谷歌搜索后,我发现它真的很旧 ffmpeg's muxer bug .
mplayer
比起我尝试将 mplayer 与 LIVE_555 库一起使用。
mplayer -noframedrop -dumpfile ${output_file} -dumpstream ${stream_link}
但我也有一些错误。
Stream not seekable!
Core dumped ;)
问题
我觉得我做错了什么。这听起来真的很荒谬,没有办法将 rtsp 流保存在正确且可播放的视频文件中。
也许还有其他一些工具可以帮助完成这项任务?实际上,对于所有类型的库和语言的任何建议,我将不胜感激。但是这个过程应该是自动的并且有 cli。
改进
我在本地主机上用 vlc-streamer 模拟 rtsp-broadcaster 做了大约 50% 的实验。这是一个manual我试图遵循这一点。
我有最新的支持 x264 的 ffmpeg,我通过 that 安装了它有用的线程。
最佳答案
你试过了吗vlc保存rtsp流?它对我有用。不过我尝试使用图形界面。但它也应该在命令行下工作。
关于video - rtsp流捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932389/