Analysieren von h264 100 GB Videostream

1176
Luke

Ich habe eine große Datei, ein h264-Stream-Video eines CCTV. Ich analysiere diese Datei mit ffprobe und das Ergebnis lautet:

[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:

  1. Kann ich wissen, ob die Datei zu einem bestimmten Datum existiert (z. B. 1. Januar 2014)? Kann ich den Metadatenstrom des h264 analysieren?
  2. Im Stream-Video gibt es zyklisch Bilder von verschiedenen Kameras nacheinander. Kann ich das Stream-Video basierend auf den Kameras aufteilen? Ist es möglich? Wenn es möglich ist, möchte ich auch die einzelnen Kamera-Clips in einem Kameravideo zusammenführen.

Vielen Dank

-1

1 Antwort auf die Frage

2
slhck

Kann ich wissen, ob die Datei zu einem bestimmten Datum existiert (z. B. 1. Januar 2014)? Kann ich den Metadatenstrom des h264 analysieren?

Nein, denn der Stream ist einfach ein H.264-Bitstream mit (einfach gesagt) einem Frame nach dem anderen.

Es enthält keine Metadaten. Wenn Sie Metadaten wünschen, benötigen Sie einen Container, z. B. einen MPEG-2-Transportstream, der üblicherweise für Streaming-Medien ausgewählt wird, oder eine MP4-Datei.

Im Stream-Video gibt es zyklisch Bilder von verschiedenen Kameras nacheinander. Kann ich das Stream-Video basierend auf den Kameras aufteilen? Ist es möglich?

Anscheinend verwendet der Stream ein proprietäres Format. ffmpeg kann diese Art von Multikameravideo nicht entschlüsseln. Normalerweise enthält ein H.264 Annex B-Bitstream nur Frames, die zu derselben Sequenz gehören.

Sie müssten einen H.264-Parser schreiben (oder mit etwas Ähnlichem beginnen h264bitstream) und die NAL-Einheiten aus dem Bitstream in separate Bitstreams aufteilen, eine pro Kamera.

Um sie zu decodieren, müssen Ihre Bitströme dann SPS- und PPS-NAL-Einheiten enthalten . In Ihrem Stream gibt es keine, was die Fehler Ihnen sagen, da die Frames auf SPS / PPS verweisen, die nie deklariert wurden.

Bei der Arbeit bekomme ich gelegentlich Überwachungskameras von Kunden. Bisher waren sie alle proprietäre Unordnung. FFmpeg hat die Dekodierung für ein paar ungerade Überwachungskameramuster implementiert. LordNeckbeard vor 8 Jahren 0