問題タブ [multiplexing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - マルチプレックス Web カメラ フィードを 1 つのフィードに
複数の Web カメラのストリームを 1 つのストリームに結合するアプリケーションを開発したいと考えています。3ヶ月前から頭の中で飛んでいるアイデアです。
アプリケーションは、最大 2 つの Web カメラからのフィードを入力として受け取り、それらを 1 つのフィード (分割画面) に結合するか、一度に 1 つ選択して、結果のフィードを Skype などのプログラムに送信します。
フローチャートは次のとおりです。
ここに3つのステップがあります:
- USB ウェブカメラからフィードを取得する
- フィードを 1 つにまとめる
- 結果を Skype に送信します (Skype で検出可能な仮想カメラを作成します)
これを行う最善の方法は何ですか?
特別な処理はありますか?
私は Java が得意です。
php - PHP のコーディング理論: 複数のキューにトラフィックを転送する必要がある (多重化)
私は、従業員が業界統計を必要とする製品のリストをアップロードするためのインターフェースをまとめています (現在、一度に 1 つずつ手動で行っています)。
各製品は、Web サービス API を介して統計エンジンに提供されます。
返信させていただきます。Stat のエンジンは、API から「次の犠牲者」を要求します。
ユーザーがアップロードする各リストには、50 ~ 1000 個の製品が含まれ、独自のキューになります。
今のところ、キュー/リストは 1 日あたり約 10 ~ 20 回追加 (および完了により削除) される可能性があります。
成功すれば、トラフィックはおそらく数か月後に 1 日あたり 700 ~ 900 件のリストに回復するでしょう。
単純なラウンド ロビン アプローチを使用して、トラフィックをキュー間で均等に転送することを計画しています。
マルチプレクサは、List A、次にList B、次にList Cの一番上のアイテムを取得し、再びList Aにループバックします... リスト/キューはいつでも追加/削除できることに注意してください。
私が直面している問題は、これの管理を概念化することです。
各キューをフラット ファイルとして保存し、リレーショナル DB (MySQL) を介してローテーションを管理することを考えました。逆に考えてみました。完全にフラット ファイルにするか、完全にリレーショナル DB にするかを考えましたが、結論として、私は柔軟です。
とにかく、参加者の可変リストを循環ローテーションでステートレスに融合しようとすると、私の脳は単に蒸気ロックです (短い休暇から戻ったばかりで、私の脳はまだ家に帰っていないと思います;)
誰かがこのようなことをしましたか?
どのように対処しましたか?
もう一度やり直さなければならないとしたら、何を改善しますか?
あらゆるヒント/提案/アドバイスを歓迎します。
注: 統計のエンジン/ツールからの各リクエストは、数分とは言わないまでも数秒間隔で分割されるため、これをステートレスに保つ必要があります。
http - 同じ TCP 接続を介した異なる HTTP ホスト
HTTP サーバーはHost
、同じ TCP 接続で異なるフィールドを持つリクエストを受信することを期待する必要がありますか? 直感に反しますが、RFC 2616 は、クライアントが同じ接続上の異なるホストへのリクエストを多重化することを明示的に禁止していないようです。
これを禁止する関連文書に規範的な規則はありますか? そうでない場合、これを効果的に防ぎ、サーバーが各リクエストでホストをチェックしないようにする実用的な考慮事項はありますか?
ffmpeg - FFMPEGMJPEGでエンコードされたデータをmp4またはaviコンテナc++に多重化する方法
mjpeg(圧縮)ビデオデータをmp4やaviなどのビデオコンテナに多重化する方法を探しています。(将来的にはオーディオも追加する必要があります)。プロジェクトの他の部分でもFFMPEGを使用しているので、可能であればそれらのライブラリを使用して実行したいと思います。私はコマンドラインFFMPEGの使用を探していません!私はffmpegで多重化の例を使用しようとしましたが、ビデオ情報を含む(非常に大きな).mjpegファイルしか作成できません。これは私が探しているものではありません。
例は大歓迎ですが、正しい方向へのポインタも機能します。
編集:yuvj422pストリームをjpeg画像に出力しましたが、これをmp4コンテナに入れたいと思います。ffmpegコマンドラインを使用すると、これは機能します。
ffmpeg -i yuvy%01d.jpg -vcodec mjpeg out.mp4
私は自分のコードでこれを直接行いたいです(もちろん最初にjpeg画像を作成することはありません)
linux - Linux カーネルには、カーネル空間の 2 つのキャラクター デバイス間でデータを直接コピーするためのモジュールがありますか?
1 つの (USB) シリアル デバイスから複数の独立したシリアル デバイスにデータを多重化する必要があります。
私が見つけたのはモジュールのファンアウトです。これは私の問題の多重化部分に対処します。
ここで、カーネル空間でシリアル USB デバイスからファンアウトデバイスにデータを直接コピーする、簡単でおそらくすぐに使用できる方法を探します。
確かに、単純cat x > y
にユーザー空間で実行できますが、カーネル空間でこれを行う方が効率的かもしれません。
c - プログラムを端末から切り離して、元に戻すにはどうすればよいですか?
私は組み込みプロジェクトに取り組んでいます。そこでは、screenやtmuxのように機能する外部依存関係のないプログラムが必要です。これらの2つのプログラムは、他のライブラリが必要なため、適切ではありません。
プログラムを切り離すだけで、ログアウトして再度ログインしたときに元に戻せるので、そのための小さなプログラムを書けるのではないかと思っていました。
プログラムを切り離して元に戻すために(Cで)どの呼び出しを行う必要があるか知っていますか?
c++ - 多重化を使用したC/C++ネットワークライブラリの検索
2つのインスタンス間で並行して実行される多数(数百)の同時ネットワーク操作を持つアプリケーションを作成しています。接続の平均存続期間は非常に短いため(多くても数秒)、多くのTCP接続を使用して毎回ハンドシェイクを実行する(特にTLSハンドシェイクの場合)オーバーヘッドが大きすぎると思いました。
私は、多重化を実装するいくつかのプロトコルとライブラリを調べ始めました(この質問への回答で述べたように、主にApache Qupid、RabbitMQなどのAMQP実装)。ただし、それらはすべてTCP上で実行されているように見えるため、オーバーヘッドが発生し、あまり意味がありません(この投稿では、問題を十分に説明し、TCP多重化は愚かであるという結論に達しました)。また、それらはすべてかなり太っていると感じます、私は小さくて軽いものが好きです(ZeroMQ残念ながら、多重化afaikは実装されていません)。それで、UDPを使用することが選択肢になるかどうかを考えました。もちろん、リカバリやACKなどを適切に実装する必要がありますが、接続を介した複数のストリームに関する知識があれば、単にTCPを使用するよりもはるかに効率的です。
上記の私の推論は正しいと思いますか、それとも私は何か重要なことを見逃しましたか?UDPを介した多重化を実装する優れたC/C ++ライブラリはありますか?
c# - 使用中のシリアルポートの多重化またはリッスン
C#.Net 4の製造元ハードウェアDLLを使用してCOMポートにアクセスします。COMポートに接続すると、Nanotecステッピングモーター制御SMCI33があります。
製造元は、ハードウェアステッピングモーターの移動が完了したときにステータスバイトを送信するためのフラグ「SetSendStatusWhenCompleted」を提供しています。残念ながら、このステータスバイトをリッスンする機能はありません。この機能を追加したいと思います。
目標:ハードウェアドライバーを使用して移動コマンドを送信します。待機:次の移動コマンドを送信する前に、応答「ステータスバイト」をリッスンします。
コードがドライバーを起動し、同じCOMポートにアクセスしようとするため、明らかにUnauthorizedAccessExceptionが発生します。同様のSO質問は、別のプログラムからのCOMアクセスを扱います。ポートスニファ(Portmon)がソリューションです。しかし、私の質問には単純なコードが必要です。
ハードウェアドライバを停止できました。現在の問題は、時間のかかる再初期化です。以前のハードウェアドライバーをシャットダウンする以外に、COMポートをリッスンする方法はありますか?
c - クライアントCでのstdinとソケットの多重化
私は多くのクライアントにサービスを提供するために単純なTCPサーバーを作成しました(それはtelnetでうまく機能します)。しかし、多重化ソケットとstdin入力を備えた独自の単純なTCPクライアントも作成したかったのです。いつものように書いたサーバーとの接続、接続コードはOKです。
ソケットとstdin入力の多重化に問題があります。最大の問題を引き起こす私のコード:
私の最初のクライアント:
私の2番目のクライアント:
これを修正する方法は?