FFMPEG:[flv @ 0xbeee10]输出流中的非单调DTS

时间:2017-10-17 18:36:38

标签: ffmpeg rtsp rtmp

我正在使用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

3 个答案:

答案 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。

我的相机设置结束了......

  • FPS:15
  • 最大比特率:11000(不可变!)
  • 优先级:帧率(而非图像质量)
  • 动态GOP:关闭
  • P-Frames:45(FPS * 3)

基本上我使流尽可能保持不变。尽可能消除任何变量并尽可能少地修改ffmpeg选项。我花了整整一天搞乱fflags。在我的情况下,我正在复制vcodec和acodec。

答案 2 :(得分:0)

您的输入似乎提供了不稳定的DTS,这对于实时输入来说是正常的。我建议尝试重写输入DTS并强制输出DTS输出DTS,但如果可能的话,我没有在5分钟内离开。

我的运气猜测是使用其中一个ffmpeg参数:

-video_track_timescale 25
-filter_complex "setpts=PTS-STARTPTS"

如果你有运气,请告诉我!