0

h264 ストリームを使用するセキュリティ DVR があります。これをzoneminderで機能させようとしています。dvr に正常にログインし、何らかの形式のデータ ストリームを受信しました。データ ストリームは fifo/pipe にダンプされ、zoneminder は ffmpeg を使用してこれを読み取ります。

注: 私は h.264 ストリームについてほとんど知りません。ばかになるには十分です。

ビデオは、ZM で約 15 秒ごとにのみ更新されます。ffmpeg または avconv (avconv -i /tmp/mypipe cam.mp4) を使用してストリームをファイルにダンプできますが、それでも正しくありません。ただし、avconv によって作成されたファイルは、ffmpeg によって作成されたファイルよりもはるかに優れています。

Wireshark ダンプへのリンクを含めました (PW とログイン情報などを変更しました...)。データから、dvr が h264 データ ストリームにヘッダーを追加しているように見えます。h264 ストリームが (0x00 00 01 67) または (0x00 00 01 61) で始まることを理解しています。ヘッダーとストリームの開始の例を次に示します。

0x33, 0x30, 0x64, 0x63, 0x48, 0x32, 0x36, 0x34, 
0x3f, 0x55, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 
0xa2, 0x7a, 0xea, 0xdc, 0xcf, 0x08, 0x00, 0x00, 
0x0d, 0x0a, 0x11, 0x07, 0x13, 0x20, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x01, 0x67, 0x42, 0xe0, 0x14, 
0xdb, 0x05, 0x87, 0xc4, 0x00, 0x00, 0x00, 0x01, 
0x68, 0xce, 0x30, 0xa4, 0x80, 0x00, 0x00, 0x00, 
0x01, 0x06, 0xe5, 0x01, 0x51, 0x80, 0x00, 0x00, 
0x00, 0x01, 0x65, 0xb8, 0x00, 0x01, 0xa8, 0xac,

このメッセージにはいくつかのフレーム インジケーターがあることがわかります。この場合、DVR のヘッダーの長さは 32 バイトのように見え、ダンプ内の他のメッセージでは 24 バイトの長さのように見えます。ストリームをパイプにダンプする前に、ヘッダーをストライピングしています。(出力に dvr のヘッダーが含まれていないことを確認しました。

私が助けてほしいのは、パイプに何を送信する必要があるかを判断することです。最初の h.264 キーから始めるべきですか? 何か調子が悪いのでしょうか?ffmpeg が 15 秒しか更新されていないことに非常に驚いていますが、avconv の方がはるかに優れています (多くのフレームがドロップされ、再生が「高速化」されています。

ffmpeg を使用してパイプを読み取ると、次のコーデックを示すファイルが生成されます: H264 - MPEG-4 AVC (part 10) (avc1) with a Decoded format: Planar 4:2:0 YUV using vlc.

あなたが提供できる助けに感謝します!

Wireshark h264 ダンプ

編集: Ubuntu 13.04 ffmpeg バージョン: 6:0.8.6-1ubuntu2 avconv 0.8.6-6:0.8.6-1ubuntu2

4

0 に答える 0