2

パケットの先頭にある MPEG4V1 ( Microsoft MPEG-4 VKI Codec V1 )データのチャンクを取得する必要がある状況にあります( DVR ユニットによって送信されました)。

パケット構造は次のようになります。

  • 圧縮された MPEG4 データ
  • long integer - イベントとトリップワイヤーの数。
  • long integer - イベントの数。
  • イベント - イベントのシーケンス。
  • long integer - トリップワイヤの数。
  • Tripwire - Tripwires シーケンス。
  • 長整数 - 巡回冗長コード (CRC)。

したがって、 MPEG4データがどこで終了するかを知る方法の指示はありません(またはそこにありますか? )、「イベントとトリップワイヤーの数」などのこの追加データの読み取りをどこから開始する必要があります...

実際のデータがどのように見えるかを確認できるように、2 つのパケットをアップロードしました: recvData1.txtrecvData2.txt

avcodec_decode_video 関数を備えた FFmpeg ライブラリを使用してこれらのパケットをデコードしようとしましたが、結果を期待してrecvDataバッファーの末尾からバイトごとに削除しました
が、FFmpeg は常に次のようなエラー メッセージを返しました。

「[msmpeg4v1 @ 038865a0] 無効な開始コード」、「[msmpeg4v1 @ 038865a0] ヘッダーが破損しています」。

私は MPEG4 が内部からどのように動作するかを知る専門家ではありませんが、エラー メッセージから判断すると、バッファの先頭でデコードするためのデータが欠落していることは明らかです。

だから私はここで取得しているMPEGデータのどの部分/種類がわかりません..
おそらくそれは、「終了」表示などを備えたある種のMPEGの「フレーム」データですか?

recvDataバッファーの開始点を、ネット "http://www.trekmania.net/clips/video_clips4.htm" で見つけた MPEG4V1 でエンコードされたビデオ ファイルの一部と比較して、バッファーの開始点に実際に含まれているかどうかを確認しました。 MPEG データ..ある種の DVR ベンダー固有のものではありません..

そして、ある種のヘッダーか何かのように見える約 20 バイトのデータ (パケット データの開始時、および約 180 バイトの直後の .avi ファイル内) があることに気付きました..

この画像を確認してください: "http://ggodis.gamedev.lt/stackOverflow/recvData.jpg"

MPEG4V1 データのこの部分が何を表しているか知っている人がいるでしょうか?

PS ..受信したパケットの CRC 値を確認しましたが、正しい値でした..

4

2 に答える 2

2

パケットを正常にデコードしました。バッファの先頭のデータは「BITMAPINFOHEADER」でした。これが私が知る必要があるすべてです。

于 2011-09-14T13:02:27.170 に答える
0

ここでは、コンテナとコーデックという 2 つの異なるものを扱っています。コーデックは、データを何らかのデジタル形式でエンコード/デコードするために使用されます (したがって、enCOder DECoder → CODEC)。MPEG4 ビデオは、すべての亜種において、そのようなコーデックのファミリーです。

他に注意する必要があるのはコンテナーです。AVIはコンテナですが、他にもたくさんあります。MPEG2-TS、MPEG2-PS、MP4、MKV、MOV (Quicktime)、FLV、Ogg など。すべてのコンテナ形式に共通しているのは、Codec フレーム/パケットを保存および/またはストリーミングするためのフレームワークを提供することです。コンテナーは、フレーム/パケットにアドレス指定するために必要な情報を提供します。

コンテナーは、デ/マルチプレクサー、短い「マルチプレクサー」で処理されます。

この画像を確認してください: "http://ggodis.gamedev.lt/stackOverflow/recvData.jpg"

真剣に?RAW データ ストリームを検索/操作するために Hex エディターを使用していることをご存知ですか? それらをテキスト エディターで開くと、Unicode の複合コードポイントなどの誤解により、あらゆる種類の重要な情報が失われる可能性があります。

だから私はここで取得しているMPEGデータのどの部分/種類がわかりません..おそらくそれは、「終了」表示などを備えたある種のMPEGの「フレーム」データですか?

これは、MP4 コンテナ ファイルの一部のように見えます。MP4 は非常にデリケートなコンテナー形式であり、完全なヘッダーに大きく依存しています。ヘッダーが破損していると、正常に再生できません。

于 2011-09-13T08:32:57.180 に答える