1

h.264 ビデオと aac オーディオを含む mpeg-ts ストリームを取得するライブ プッシュ フィルターを作成しました。directshow パイプラインをセットアップし、出力ピンを構成します。h.264 ストリームをレンダリングできますが、videotestsrc と「ボール」パターンを使用して gstreamer からストリーミングすると、このスクリーンショットからわかるように、レンダリングでアーティファクトが発生します。のこのスクリーンショットには、黒い背景に白い点が 1 つだけ含まれている必要があります。追加の 2 つは、アニメーションの再生時に表示される「残り物」です。

MPEG-2 をストリーミングし、それに応じてパイプラインを変更すると、パターンはエラーなしでレンダリングされます。msdnで説明されている設定を使用してピンを構成しようとしました。H264 と AVC1 の両方を使用して、シーケンス ヘッダーなどを明示的に提供します。私はまだ同じ種類のアーティファクトを取得しています。

興味深い点の 1 つは、I フレームが到着するのとほぼ同じ頻度でアーティファクトが表示されることです。I フレームのみを送信すると (key-int-max=1)、アーティファクトは完全に消えます。

また、I フレーム間隔が 60、つまり 2 秒ごとの場合、エラーは画像の上半分に現れるようです。2 フレームごとに 1 つの I フレームに変更すると (key-int-max=2)、アーティファクトは画像上部の狭い帯にのみ表示されます。

次の gstreamer パイプラインがビデオ ストリームを生成しました。

videotestsrc live-source=true pattern=ball ! video/x-raw-yuv,format=(fourcc)I420,width=1366,height=768,framerate=30/1 ! timeoverlay halign=left valign=bottom shaded-background=true ! x264enc bitrate=4096 tune=zerolatency ! h264parse ! queue ! mux. audiotestsrc wave=ticks volume=0.2 ! voaacenc ! mux. mpegtsmux name=mux ! udpsink host=<ip> port=<port>

パイプラインは次のようになります。 パイプライン

この例の構成は、majortype = MEDIATYPE_Video、subtype = MEDIASUBTYPE_H264、formattype = FORMAT_MPEG2Video です。シーケンスヘッダーは特に提供されていません。

問題は、これらの種類のアーティファクトは、一般的な構成の問題の症状でしょうか?

4

2 に答える 2

0

MPEG-2 デマルチプレクサは、H.264 コンテンツを処理するように設計されていないことが判明しました。だからこそ、これらの効果が現れるのです。

于 2013-05-10T06:33:07.670 に答える