
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...
- 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?
- 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