web-dev-qa-db-ja.com

netcatでビデオをストリーミングする方法

Raspberry Piストリームビデオが欲しいので、これを実行しています:

raspivid ... -o - | nc -l -k 4242

しかし、問題は、パイプまたはncが、誰かが接続するまでデータをキャッシュしていることです。しかし、私はそれをしたくありません。誰かが接続するまで、すべてのデータを削除したいと思います。

1
Pitel

リスニングTCPソケットを設定しました。これには、データが流れる前にクライアントが接続する必要があります。ただし、代わりにUDPソケットを設定した場合でも、ストリームの解釈方法を定義するメタデータがなくても、クライアントが途中で接続することになります。

メタデータを頻繁かつ定期的に提供するプロトコルがある場合は、UDPソケットを試すことができます。私のバージョンのncには-kオプションがありませんが、(少なくとも)2つの異なるバージョンが利用可能であることを認識しているため、テスト済みのコマンドラインの例を示すことはできません。


ビデオをストリーミングしたい場合は、専用のソフトウェアを使用する必要があります。これは複雑な技術分野(多くの特許があるため、複雑な法的分野でもあります)であり、MJPEGなどの単純なものをストリーミングしない限り、netcatなどのナイーブなソリューションで成功する可能性はほとんどありません。

ソフトウェアアプリケーションのいくつかの例は、 VideolanIcecastOpencast 、または Red5 などから見つけることができます。


実際、いくつかを読んで raspividのドキュメントxinetdまたはsystemdによって提供されるようなリスナーを使用して着信接続を処理し、TCP接続が完了したらraspividを開始できるようです。確立されています。フロー制御やリアルタイムの帯域幅管理はまだ得られませんが、制御されたネットワークでは、目的を十分に達成できる可能性があります。

1
roaima