我正在使用FFMPEG来获取我的IP摄像机的RTSP流并将其作为RTMP发送到我的流媒体服务器。当我运行该命令时,我得到以下5个错误,然后流启动。但是,如果我让它过夜,它将停止流式传输并填充终端也会出现此错误。
[flv @ 0x191ba0] Non-monotonous DTS in output stream 0:0; previous: 0, current: -202; changing to 0. This may result in incorrect timestamps in the output file.
我的FFMPEG命令有问题吗?
ffmpeg -rtsp_transport tcp -i rtsp://redact@192.168.10.112:redact_port/live0.264 -acodec copy -vcodec copy -f flv rtmp://127.0.0.1/live/ipcam
ffmpeg version N-87747-g123f6dc Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 4.9.2 (Raspbian 4.9.2-10)
configuration: --enable-shared --enable-gpl --prefix=/usr --enable-nonfree --enable-libmp3lame --enable-libx264 --enable-version3 --disable-mmx
libavutil 55. 77.101 / 55. 77.101
libavcodec 57.106.104 / 57.106.104
libavformat 57. 82.102 / 57. 82.102
libavdevice 57. 9.101 / 57. 9.101
libavfilter 6.106.101 / 6.106.101
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, rtsp, from 'rtsp://redact@192.168.10.112:redact_port/live0.264':
Metadata:
title : Session Streamed by LIBZRTSP
comment : live0.264
Duration: N/A, start: 0.242000, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuv420p(progressive), 1280x720, 25 fps, 24.83 tbr, 90k tbn, 50 tbc
Stream #0:1: Audio: pcm_mulaw, 8000 Hz, mono, s16, 64 kb/s
Output #0, flv, to 'rtmp://127.0.0.1/live/ipcam':
Metadata:
title : Session Streamed by LIBZRTSP
comment : live0.264
encoder : Lavf57.82.102
Stream #0:0: Video: h264 (Main) ([7][0][0][0] / 0x0007), yuv420p(progressive), 1280x720, q=2-31, 25 fps, 24.83 tbr, 1k tbn, 90k tbc
Stream #0:1: Audio: pcm_mulaw ([8][0][0][0] / 0x0008), 8000 Hz, mono, s16, 64 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[flv @ 0xbeee10] Non-monotonous DTS in output stream 0:0; previous: 0, current: -202; changing to 0. This may result in incorrect timestamps in the output file.
[flv @ 0xbeee10] Non-monotonous DTS in output stream 0:0; previous: 0, current: -162; changing to 0. This may result in incorrect timestamps in the output file.
[flv @ 0xbeee10] Non-monotonous DTS in output stream 0:0; previous: 0, current: -121; changing to 0. This may result in incorrect timestamps in the output file.
[flv @ 0xbeee10] Non-monotonous DTS in output stream 0:0; previous: 0, current: -81; changing to 0. This may result in incorrect timestamps in the output file.
[flv @ 0xbeee10] Non-monotonous DTS in output stream 0:0; previous: 0, current: -41; changing to 0. This may result in incorrect timestamps in the output file.
[flv @ 0xbeee10] Non-monotonous DTS in output stream 0:0; previous: 0, current: -1; changing to 0. This may result in incorrect timestamps in the output file.
frame=321421 fps= 25 q=-1.0 size= 1190616kB time=03:36:01.31 bitrate= 752.5kbits/s speed= 1x
答案 0 :(得分:2)
我会尝试-use_wallclock_as_timestamps 1
和-fflags +genpts
答案 1 :(得分:2)
我在输入流上使用了 -use_wallclock_as_timestamps 1 和 -r 15 (15是FPS)。我还在所有输出流上添加了 -r 15 。
最大的罪魁祸首是我正在使用的相机。我有一个最大比特率而不是变量。我禁用了动态GOP和动态fps。我也继续升级到FFMPEG 4,它出现在4/20(原帖后)。我使用Ubuntu 17.10与Axis M3027,Axis M3037,Axis M3048-P相机。我下周将测试韩华12MP鱼眼相机。我的输入源是通过RTSP的h264。我输出HLS并录制到MP4。
我的相机设置结束了......
基本上我使流尽可能保持不变。尽可能消除任何变量并尽可能少地修改ffmpeg选项。我花了整整一天搞乱fflags。在我的情况下,我正在复制vcodec和acodec。
答案 2 :(得分:0)
您的输入似乎提供了不稳定的DTS,这对于实时输入来说是正常的。我建议尝试重写输入DTS并强制输出DTS输出DTS,但如果可能的话,我没有在5分钟内离开。
我的运气猜测是使用其中一个ffmpeg参数:
-video_track_timescale 25
-filter_complex "setpts=PTS-STARTPTS"
如果你有运气,请告诉我!