問題タブ [buffering]
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.
c++ - C++ で多くのプロセスの中央データ バッファーを処理する
次の問題に遭遇し、続行する方法を決定できません。
1/T 秒ごとにデータのチャンクを取得するクラスがReader
あります (実際には、データはビデオ フレームからのもので、1 秒あたり 30 フレームです)。Detectors
チャンクは、チャンクを処理して決定を出力するいくつかのオブジェクトに渡されます。ただし、各検出器が決定を下す前に読み取る必要があるチャンクの数はさまざまです。たとえば、チャンクが 1 つだけ必要な場合もあれば、51 個のチャンクが必要な場合もあります。
Reader
読み取りデータチャンクを配置するデータバッファーを用意し、パブリッシュ/サブスクライバーを実装してそれぞれを登録Detector
し、データバッファーに処理するのに十分な数のフレームがある場合に信号を送信することを考えています。これは良いアプローチですか?Detectors
また、バッファを管理し、独自のコピーを作成せずにバッファからデータを読み取る最良の方法は何ですか? 共有ポインタ?
どうもありがとう!
ハ
python - Pythonの構造体モジュールに適したバッファは何ですか
Pythonでは、バイナリファイルを文字列に読み込んでから、を使用してアクセスしていますstruct.unpack(...)
。ここで、を使用してその文字列に書き込みたいのですが、 「文字列を変更可能なバッファとして使用できません」struct.pack_into(...)
というエラーが発生します。モジュールで使用するのに適したバッファは何ですか?struct
winapi - ストリーム (tcp) ソケットから正確なバイト数を読み取る方法は?
winsock では、指定されたサイズ (これは上限にすぎません) に関係なく、ストリーム ソケットで使用可能なデータが存在するとすぐに、同期recv
と非同期の両方が完了します。WSARecv
これは、ストリームから一定のバイト数を読み取るために、カスタム バッファリングを適用する必要があることを意味します。また、各読み取りが個別にバッファリングされない限り、ダブル バッファリングが発生します。つまり、ソケットごとに実際には 2 つのバッファがあります。
winsock に代わりにデータをバッファリングし、指定されたバイト数が利用可能になったときにのみ操作を完了するように要求する方法はありますか (エラーが発生しない限り)。
編集:この機能は、特に非同期ソケットで機能するはずです。
perl - Perl で入力ファイルハンドルのバッファにデータがあるかどうかを確認するにはどうすればよいですか?
私は、epoll ベースのイベント ループを使用して複数の同時ソケット接続を処理するプログラムに取り組んでいます。アプリは、読み取るデータがあることを検出すると、バッファリングされた IO を使用する process_request() サブルーチンを呼び出します。例えば:
問題は、ここでバッファリングされた I/O を使用することにより、epoll はバッファ内に未読のデータが待機していることを認識しないため、再度 process_request() を呼び出さないことです。
問題は、Perl のファイルハンドルに未読のデータがあるかどうかをどのように検出して、データがバッファに残っている限り process_request() を再度呼び出すことができるかということです。
flash - ビデオがバッファリングされていることを検出する方法は?
今日の私の質問は、Flash AS3 ビデオ バッファリングに関するものです。(ストリーミングまたはプログレッシブ) ビデオがいつバッファリングされているかを検出できるようにしたいので、ユーザーにもう少し待つように知らせるある種のアニメーションを表示できます。
現在、ビデオが起動し、フレーム 1 を 3 ~ 4 秒間保持してから再生します。ビデオが一時停止または壊れているような印象を与えます:(
アップデート
iandismeのおかげで、私は今、正しい方向に向かっていると信じています。livedocs の NetStatusEvent。作業中の重要なステータスは"NetStream.Buffer.Empty"
、アニメーションまたはトレース ステートメントをトリガーするかどうかを確認するコードを追加したことです。まだ運はありませんが、バッファがいっぱいになるとコードがトリガーされます:/おそらく私のビデオは常にその間のどこかにBuffer.Empty
あり、Buffer.Full
そのため、ケースをテストするときにコードをトリガーしませんBuffer.Empty
か?
現在のコード
c++ - ネットワーキング方法
やあみんな、私が完全なパケットを送信するとき(バッファにデータを収集して送信するとき)、パケットをバイトごとに送信するよりもはるかに遅いことに気づきました。この方法でオンラインゲームを作っても大丈夫ですか?
android - Android MediaPlayer を使用したストリーミング - エラーのキャッチとバッファリング
MediaPlayer
HTTP URL からストリーミングするときに回復力を得るのに苦労しています。
ファイルの再生を開始した後、接続を切断すると (機内モードなど)、 がMediaPlayer#OnErrorListener
生成されwhat=1, extra=-17
、その後すぐにwhat=-38, extra=0
.
これが何を意味するかについて API で確認できるドキュメントはありませんが、extra は「通常は実装依存」です。私は HTC Hero を使っています (まあ、それは T-Mobile UK の G2 Touch です)。
他の人も同じ値を取得しますか?これらの値を、接続が失われたことを意味するものとして捉えても安全ですか?
接続が再表示されたときに再開するにはどうすればよいですか? (現在のシークを設定に保存し、5 秒ごとに再試行しますか?)
デバイスがバッファリングしているものの再生を開始することを決定したことをどのように知ることができますか? (ポーリング以外にisPlaying()
) コールバックはありますか?
さらに、何onBufferingUpdate
が提供されるのか完全にはわかりません。私は 40 分のポッドキャストを使用していますMP3 (64kbps bitrate)
- バッファリングは 1%、2%、3% になります。約 30 分をシークすると 75% が表示され、最初に戻って 5% に戻ると、キャッシュされているものをおおよそ表示する以外に、このコールバックのポイントは何ですか?
最後に、ストリーミングされたものを にパイプする方法はありますMP3
か?
c - C: HTTP のコンテキストで select を使用する場合の部分的なヘッダーのケースへの対処
これは、すでに回答されている私の以前の質問に関連しています。
C: select 呼び出しを使用して、読み取り中にデータを追跡するにはどうすればよいですか?
私のプロトコルは、他のデータを送信する前に、最初に送信するデータの量を実際に送信します。しかし、昨日、ブラウザを使用してこのコードをテストしたとき、次の 1 つの質問がありました。
多くの人が、メッセージの長さをチェックするが、ブラウザーのシナリオを採用することを提案しました。ブラウザの HTTP リクエストには、最初にサーバーに送信されるときのサイズがありません。ここで、256 バイトのバッファーを使用したと仮定すると、多重化アクションごとに部分ヘッダーを受信し続ける場合、このクライアントのデータ構造をどのように管理すればよいでしょうか? より多くのデータを取得し続けるため、realloc を使用し続け、終了シーケンス ('\r\n') に遭遇すると、すべてのデータが受信されたと想定しますか?
つまり、次のようなものがあります。
そして、データに再割り当てを使い続けますか? 最大プロトコル ヘッダーのバッファ サイズを割り当てるように言われましたが、それが唯一の方法ですか?
c - C:この要件に対してFIFOキューの実装よりも優れたものはありますか?
私のプログラムの1つには、複数のクライアントがあり、各クライアントには独自のバッファーがあります。無限ループで、クライアントのいずれかにディスクに書き込むデータがあるかどうかを確認します。もしそうなら、私は同じことをして続行します。
さて、クライアントは実際には私の制御下にないデータ(いくつかの計算の結果)を書き込むため、動的バッファーが必要です。したがって、擬似コードは次のようになります。
または、他のアプローチは、単純なメッセージキューを使用することです。私は既存のキューにメッセージ(文字列)を追加し続け、それからそれらを読み上げます。他にもっと良いアプローチはありますか?
audio - gstreamer-ウェブサイトからオーディオを再生しています。バッファリングの問題
を使用してサウンドファイルを再生しようとしています:
gst-launch playbin uri="some URL"
ここで、URLはそのファイルのURL全体です。
このファイルは再生されますが、バッファリングの問題があり、ほとんどのオーディオを聞くことができません。
このバッファリングの問題を解決する簡単なコマンドライン引数はありますか?
例:appsrcを使用して一時バッファーを保存し、それを再生します...コードスニペットをいただければ幸いです。
注:私はWindowsを使用しており、GStreamerのインストールにはいくつかの標準プラグインしかありません。ただし、appsrcプラグインとappsinkプラグインはあります。
ありがとう