Speichern von standardkonformen Videos von Hikvision DS-2CD2032-Kameras

Speichern von standardkonformen Videos von Hikvision DS-2CD2032-Kameras

Ich versuche, Video zu speichern vonHikvision DS-2CD2032-Kameras(auch bekannt als Swann HD-820CAM oder Lorex MCNB2151) über ffmpeg. Es funktioniert grundsätzlich mit einem Befehl wie diesem:

$ ffmpeg -rtsp_transport tcp -i rtsp://user:pass@ip/ -c copy -map 0:0 driveway.mp4
ffmpeg version N-73641-gb90b6af Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.1 (Ubuntu 4.9.1-16ubuntu6)
  configuration:
  libavutil      54. 28.100 / 54. 28.100
  libavcodec     56. 48.100 / 56. 48.100
  libavformat    56. 40.100 / 56. 40.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 21.100 /  5. 21.100
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
Input #0, rtsp, from 'rtsp://user:pass@ip/':
  Metadata:
    title           : Media Presentation
  Duration: N/A, start: 0.466078, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuv420p(tv, bt709), 1280x720, 15 fps, 15 tbr, 90k tbn, 30 tbc
    Stream #0:1: Data: none
[mp4 @ 0x24f6720] Codec for stream 0 does not use global headers but container format requires global headers
Output #0, mp4, to 'driveway.mp4':
  Metadata:
    title           : Media Presentation
    encoder         : Lavf56.40.100
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=2-31, 15 fps, 15 tbr, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x24f6720] Non-monotonous DTS in output stream 0:0; previous: 0, current: -30013; changing to 1. This may result in incorrect timestamps in the output file.
[mp4 @ 0x24f6720] Non-monotonous DTS in output stream 0:0; previous: 1, current: -23990; changing to 2. This may result in incorrect timestamps in the output file.
[mp4 @ 0x24f6720] Non-monotonous DTS in output stream 0:0; previous: 2, current: -17996; changing to 3. This may result in incorrect timestamps in the output file.
[mp4 @ 0x24f6720] Non-monotonous DTS in output stream 0:0; previous: 3, current: -11994; changing to 4. This may result in incorrect timestamps in the output file.
[mp4 @ 0x24f6720] Non-monotonous DTS in output stream 0:0; previous: 4, current: -5992; changing to 5. This may result in incorrect timestamps in the output file.
[mp4 @ 0x24f6720] Non-monotonous DTS in output stream 0:0; previous: 5, current: -18; changing to 6. This may result in incorrect timestamps in the output file.
frame=  178 fps= 18 q=-1.0 Lsize=    1711kB time=00:00:11.39 bitrate=1229.3kbits/s
video:1708kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.177573%

aber die Warnmeldungen machen mir Sorgen. Insbesondere möchte ich jedes Problem ansprechen, das dazu führen könnte, dass das Video nicht flüssig abgespielt wird oder die Interaktion mit manchen Playern nicht einwandfrei funktioniert. Also...

  1. Was sind "globale Header"? Welche Konsequenzen hat es, wenn sie fehlen? Ich habe einen Hinweis zu dump_extra in derDokumentation zu ffmpeg-Bitstream-Filtern. Wenn ich das beschriebene „-flags:v +global_header -bsf:v dump_extra“ hinzufüge, verschwindet die Warnung. Was genau macht es? Ich nehme an, es verschiebt etwas von einem Header pro Paket in einen globalen Header? Wie kann ich diese untersuchen/den Unterschied feststellen?
  2. Was kann ich ggf. gegen die Warnungen „Nicht-monotones DTS“ tun?

fwiw, ich habe mit libavformat ein benutzerdefiniertes Programm geschrieben, das die DTS-Informationen aus jedem Frame wie folgt ausgibt:

while (av_read_frame(input_context, &packet) == 0) {
  if (packet.flags & AV_PKT_FLAG_KEY) {
    cout << "have key frame, dts: " << packet.dts << endl;
  } else {
    cout << "  have non-key frame, dts: " << packet.dts << endl;
  }
}

und es hat das hier ausgespuckt, also nehme ich an, dass es nur die Keyframes sind, die die falschen DTS haben? Ich weiß nicht, was ich davon halten soll.

have key frame, dts: 41995
  have non-key frame, dts: 12033
  have non-key frame, dts: 17966
have key frame, dts: 23970
  have non-key frame, dts: 29992
  have non-key frame, dts: 35992
  have non-key frame, dts: 41995
  have non-key frame, dts: 47995
have key frame, dts: 53973
  have non-key frame, dts: 59994
  have non-key frame, dts: 65996
  have non-key frame, dts: 71995
  have non-key frame, dts: 77994
have key frame, dts: 83978
  have non-key frame, dts: 89993
  have non-key frame, dts: 95997
  have non-key frame, dts: 102035
  have non-key frame, dts: 107978
have key frame, dts: 113976
  have non-key frame, dts: 119998
  have non-key frame, dts: 126000
  have non-key frame, dts: 131997
  have non-key frame, dts: 138000

verwandte Informationen