大きなファイル、CCTV の h264 ストリーム ビデオがあります。このファイルを ffprobe で分析すると、次の結果が得られました。
[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
小さな問題が 2 つあります。
- ファイルが特定の日付 (たとえば、2014 年 1 月 1 日) に存在するかどうかを知ることはできますか? h264 のメタデータ ストリームを分析できますか?
- ストリーム ビデオには、異なるカメラの画像が次々に周期的に表示されます。ストリーム ビデオをカメラごとに分割できますか? 可能ですか? 可能であれば、個別のカメラ クリップを 1 つのカメラ ビデオに結合することもできます。
ありがとう
答え1
ファイルが特定の日付 (たとえば、2014 年 1 月 1 日) に存在するかどうかを知ることはできますか? h264 のメタデータ ストリームを分析できますか?
いいえ、ストリームは単純に言えば 1 フレームずつ続く H.264 ビットストリームだからです。
メタデータは含まれません。メタデータが必要な場合は、ストリーミング メディアでよく選択される MPEG-2 トランスポート ストリームなどのコンテナー、または MP4 ファイルが必要です。
ストリームビデオには、異なるカメラの画像が次々に周期的に表示されます。ストリームビデオをカメラごとに分割できますか? 可能ですか?
どうやら、ストリームは独自の形式を使用しているようです。ffmpeg では、そのようなマルチカメラ ビデオをデコードできません。通常、H.264 Annex B ビットストリームには、同じシーケンスに属するフレームのみが含まれます。
H.264パーサーを書く必要があります(または次のようなものから始める必要があります)h264bitstream
) ビットストリームからの NAL ユニットをカメラごとに 1 つずつ個別のビットストリームに分割します。
そして、それをデコードするためには、ビットストリームに以下が含まれている必要があります。SPS および PPS NAL ユニットストリームには何も存在しません。フレームは宣言されていない SPS/PPS を参照しているため、エラーがそれを通知します。