CMOS ビデオをキャプチャし、それをトランスポート ストリームにエンコードし、イーサネット経由でリモート PC に送信する Zynq Xilinx FPGA に基づいた学生向けのオープン ソース大学プロジェクトを計画しています。基本的に、私はさらに別の IP カメラを設計したいと考えています。FPGA の経験は豊富ですが、ビデオ データのエンコードと転送に関する知識が不足しています。これが私の計画です:
CMOS カメラを FPGA に接続し、ビデオ フレームを受信して外部 DDR メモリに保存し、HDMI 出力を使用して監視することを確認します。問題ありません。
たとえば、ビデオ ストリームを H.264 形式に圧縮し、トランスポート ストリームに入れる必要があることを理解しています。ここでは、知識がほとんどなく、いくつかのヒントが必要です。
トランスポート ストリームを形成したら、UDP パケットを使用してネットワーク経由で送信できます。FIFOからデータを読み取り、UDPパケットとしてリモートPCに送信するハードウェアソリューションが機能しています。
そして最後に、ffmpeg ライブラリを使用してビデオを受信して再生する予定です。
ffplay udp://localhost:5678
私の質問は基本的に2ステップに関するものです。ピクセル フレームをトランスポート ストリームに変換するにはどうすればよいですか? 私のオプションは次のとおりです。
- のような商用 IP を使用する
ここでは、それらが無料で使用できるとは思えず、資金もあまりありません。
次のようなオープンコアを使用します
- http://sourceforge.net/projects/hardh264/ - ここでコアは h264 出力のみを生成しますが、それをトランスポート ストリームにカプセル化する方法は?
- opencores.org を検索しましたが、このトピックでは成功しませんでした
- たぶん誰かがオープンソース関連の優れた FPGA プロジェクトを知っていますか?
Vivado HLS (C 言語) を使用してハードウェア エンコーダーを自作します。しかし、ここでアルゴリズムがわからないという問題があります。たぶん、ffmpeg または Cisco openh264 ライブラリをギグして、生のピクセル フレームを H.264 形式に変換してトランスポート ストリームに入れる機能を見つけることができますか? ここでも助けが必要です。
また、FPGA 内で生成する可能性のあるストリームと、ffplay ユーティリティによってホストで期待されるストリームのフォーマットの互換性についても心配しています。ヘルプ、ヒント、リンク、および書籍は高く評価されています。