Ich habe eine große Datei, ein H264-Stream-Video einer Videoüberwachung. Ich analysiere diese Datei mit ffprobe und das Ergebnis ist folgendes:
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] non-existing PPS 0 referenced Last message repeated 1 times
[h264 @ 0000000002d24480] decode_slice_header error
[h264 @ 0000000002d24480] no frame!
[h264 @ 0000000002d24480] concealing 890 DC, 890 AC, 890 MV errors in I frame
[h264 @ 0000000002d24480] sps_id 1 out of range
Input #0, h264, from 'E:\example_1':
Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Main), yuv420p, 704x576, 25 fps, 25 tbr, 1200k tbn, 50 tbc
Ich habe zwei kleine Probleme:
- Kann ich erfahren, ob die Datei an einem bestimmten Datum existiert (z. B. 1. Januar 2014)? Kann ich den Metadatenstrom des h264 analysieren?
- Im Stream-Video sind Bilder verschiedener Kameras zyklisch hintereinander zu sehen. Kann ich das Stream-Video nach Kameras aufteilen? Ist das möglich? Wenn das möglich ist, würde ich die einzelnen Kameraclips auch gerne zu einem Kameravideo zusammenführen.
Danke
Antwort1
Kann ich erfahren, ob die Datei an einem bestimmten Datum existiert (z. B. 1. Januar 2014)? Kann ich den Metadatenstrom des h264 analysieren?
Nein, da es sich bei dem Stream lediglich um einen H.264-Bitstream mit (vereinfacht ausgedrückt) einem Frame nach dem anderen handelt.
Es enthält keine Metadaten. Wenn Sie Metadaten benötigen, benötigen Sie einen Container, z. B. einen MPEG-2-Transportstrom, der häufig für Streaming-Medien verwendet wird, oder eine MP4-Datei.
Im Videostream werden zyklisch nacheinander Bilder verschiedener Kameras angezeigt. Kann ich den Videostream basierend auf den Kameras aufteilen? Ist das möglich?
Offenbar verwendet der Stream ein proprietäres Format. ffmpeg kann diese Art von Mehrkamera-Video nicht dekodieren. Normalerweise enthält ein H.264 Annex B-Bitstream nur Frames, die zur selben Sequenz gehören.
Sie müssten einen H.264-Parser schreiben (oder mit etwas wieh264bitstream
) und teilen Sie die NAL-Einheiten aus dem Bitstrom in separate Bitströme auf, einen pro Kamera.
Um es dann zu dekodieren, müssen Ihre Bitstreams enthaltenSPS- und PPS-NAL-Einheiten. In Ihrem Stream gibt es keine, das sagen Ihnen die Fehler, da die Frames auf SPS/PPS verweisen, die nie deklariert wurden.