如何将 rtsp 流保存(记录)到磁盘存储而没有伪影和丢失秒数?
How to save (record) rtsp stream to the disk storage without artifacts and missing seconds?
我需要将 rtsp 流保存(记录)到磁盘存储。
我正在为此使用 nginx-module 和 ffmpeg。
这里是启用录音的配置:
rtmp {
live on;
hls on;
hls_fragment 5s;
server {
listen 1935;
application cam1 {
hls_path /tmp/cam1;
}
exec_static ffmpeg -rtsp_transport tcp -i rtsp://... -c copy -f flv rtmp://.../cam1/stream;
}
}
Config 正在创建 flv 文件,每个持续时间为 5 秒。
然后我们需要通过命令将所有得到的文件合并到一个文件中:
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.flv
连接文件后我们遇到了问题。当前 5 秒结束并在接下来的 5 秒开始时,我们有伪影并且缺少 0.5-1 秒。
请帮我保存 rtsp 流而没有伪影和丢失的秒数。
我们决定排除Nginx,构建不带格式解码的ffmpeg。这帮助我们解决了问题:
ffmpeg -rtsp_transport tcp -i "rtsp://..." -reconnect 1 \
-f segment -segment_format flv -segment_time 10 -segment_atclocktime 1 \
-reset_timestamps 1 -strftime 1 -avoid_negative_ts 1 \
-c copy -map 0 %Y%m%d-%H%M%S.flv
我需要将 rtsp 流保存(记录)到磁盘存储。 我正在为此使用 nginx-module 和 ffmpeg。 这里是启用录音的配置:
rtmp {
live on;
hls on;
hls_fragment 5s;
server {
listen 1935;
application cam1 {
hls_path /tmp/cam1;
}
exec_static ffmpeg -rtsp_transport tcp -i rtsp://... -c copy -f flv rtmp://.../cam1/stream;
}
}
Config 正在创建 flv 文件,每个持续时间为 5 秒。 然后我们需要通过命令将所有得到的文件合并到一个文件中:
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.flv
连接文件后我们遇到了问题。当前 5 秒结束并在接下来的 5 秒开始时,我们有伪影并且缺少 0.5-1 秒。
请帮我保存 rtsp 流而没有伪影和丢失的秒数。
我们决定排除Nginx,构建不带格式解码的ffmpeg。这帮助我们解决了问题:
ffmpeg -rtsp_transport tcp -i "rtsp://..." -reconnect 1 \
-f segment -segment_format flv -segment_time 10 -segment_atclocktime 1 \
-reset_timestamps 1 -strftime 1 -avoid_negative_ts 1 \
-c copy -map 0 %Y%m%d-%H%M%S.flv