問題タブ [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.

0 投票する
6 に答える
29674 参照

android - Android - MediaPlayer がいつバッファリングされているかを確認する方法

ここで明らかな何かが欠けている必要がありますが、MediaPlayer がいつオーディオをバッファリングしているかを判断できるものを見つけることができないようです。インターネット オーディオをストリーミングしていて、バッファリング インジケーターを表示したいのですが、MediaPlayer がいつオーディオのバッファリングを中断したかを知ることができないため、バッファリング インジケーターを適切に表示できません。手がかりはありますか?

0 投票する
0 に答える
282 参照

wcf - 大きなオブジェクトまたは複雑なオブジェクトを WCF サーバーからクライアントに送信する

私のアプリケーションは、ほぼリアルタイムのデータ バッファリング アプリケーションです。

私は、ネットを使用しています。複雑なオブジェクトを送信するための TCP バインディング。

クライアントへのさまざまなコールバック関数を介してデータをバッファリングします。

特定のイベントを有効にすると、アプリケーションの速度が低下し、リアルタイムではなくなります。

WCF で大規模で複雑なオブジェクトを持つ複数のクライアントにリアルタイムのデータ バッファリングを行うための最適な方法を誰もが助けることができますか ???

0 投票する
1 に答える
2484 参照

c# - イベントのバーストをスムーズにするためのRxIObservableバッファリング

急速なバーストでイベントを生成するObservableシーケンスがあります(つまり、次々に5つのイベント、次に長い遅延、次に別の高速バーストのイベントなど)。イベント間に短い遅延を挿入して、これらのバーストをスムーズにします。例として次の図を想像してみてください。

Observable.Interval()私の現在のアプローチは、生のストリームから別のイベントをプルしても問題がないときに、その信号を介してメトロノームのようなタイマーを生成することです。問題は、そのタイマーをバッファリングされていない生の監視可能なシーケンスと組み合わせる方法がわからないことです。

IObservable.Zip()は私がやりたいことを実行するのに近いですが、生のストリームがタイマーよりも速くイベントを生成している場合にのみ機能します。生のストリームに大きな落ち込みがあるとすぐに、タイマーは一連の不要なイベントを構築し、すぐに生のストリームからのイベントの次のバーストとペアになります。

理想的には、上記で概説した動作を生成する次の関数シグネチャを持つIObservable拡張メソッドが必要です。今、私の救助に来てくださいStackOverflow :)

PS。私はRxを初めて使用するので、これが簡単な質問である場合はお詫びします...


1.シンプルでありながら欠陥のあるアプローチ

これが私の最初の素朴で単純な解決策であり、かなりの数の問題があります。

これに関する最初の明らかな問題は、内部サブスクリプションによってrawソースに返されたIDisposableが失われるため、サブスクリプションを終了できないことです。このメソッドによって返されたIDisposableでDisposeを呼び出すと、タイマーは強制終了されますが、キューからイベントをプルするために誰も残っていない状態でキューを不必要に埋めている基になる生のイベントフィードは強制終了されません。

2番目の問題は、例外またはストリーム終了通知がrawイベントストリームからバッファリングされたストリームに伝播される方法がないことです。これらは、rawソースにサブスクライブするときに単に無視されます。

そして最後に大事なことを言い忘れましたが、実際にやるべきことがあるかどうかに関係なく定期的にウェイクアップするコードがあります。これは、この素晴らしい新しいリアクティブな世界では避けたいと思います。


2.非常に複雑なアプローチ

最初の単純なアプローチで発生した問題を解決するために、次のように動作するはるかに複雑な関数を作成しましたIObservable.Delay()(.NET Reflectorを使用してそのコードを読み取り、関数の基礎として使用しました)。AnonymousObservable残念ながら、 system.reactiveコードの外部では公開されていないなど、定型的なロジックの多くは、多くのコードをコピーして貼り付ける必要がありました。このソリューションは機能しているように見えますが、その複雑さを考えると、バグがないという自信はありません。

標準のReactive拡張機能のいくつかの組み合わせを使用してこれを達成する方法がないことを信じることができません。不必要に車輪の再発明をしているような気がするのは嫌いで、作成しようとしているパターンはかなり標準的なもののようです。

0 投票する
2 に答える
1662 参照

c - プログラムからのxtermの入力のラインバッファリングを無効にする方法は?

つまり、ユーザーがEnterキーを押すのを待たずに、キーストロークをプログラムに直接送信する方法です。cbreak()基本的に私は呪いの呼びかけのようなものを手に入れようとしています。(しかし、回避できなかったいくつかのバグ/機能不全のために、呪いを使用することはできません。)これは単なる些細なエスケープシーケンスであるはずのようですが、何も見つかりませんでした。

0 投票する
2 に答える
307 参照

stdout - バッファリング標準出力 (STDOUT)

デフォルトでは、STDOUT はバッファリングされていませんか? そうでない場合、デフォルトのバッファリングのタイプは何ですか

ありがとう

0 投票する
5 に答える
24008 参照

android - オーディオ ストリームのバッファリング

ライブ オーディオ ストリームを再生する必要があります。実際にはラジオです。問題は、ストリーミング用に 20 分のバッファーも管理する必要があることです。私が理解している限り、アンドロイドで実装するのは簡単ではありません。

最初に MediaPlayer を確認しましたが、バッファ管理のためのメソッドは提供されていません。実際、バッファサイズを直接設定することさえできません。

次に、ローカル ファイルを使用してバッファを管理しようとしました。ストリームを一時ファイルに徐々にダウンロードし、それらを切り替えました。ただし、次のファイルに切り替えたい (MediaPlayer でデータソースを変更する) と、オーディオが連続して再生されません。短い中断が聞こえます。

最後のアイデアは、ストリーム プロキシを使用することです。通常、Android バージョン 8 未満でストリームを再生するために使用されます。ストリーム プロキシでは、ServerSocket を作成し、オーディオ ストリームから読み取り、プレーヤーに書き込みます。したがって、実際にはそこでバッファリングを管理できます。ストリームをキャッシュして、必要に応じて MediaPlayer に書き込むことができます。しかし。Android 8 では動作しません。

例外が発生しました: Connection reset by peer java.net.SocketException: Connection reset by peer. MediaPlayer 8 は、ソケットからデータを読み取りたくありません。

したがって、2 つの質問があります。1) ストリーム バッファリングを実装する他の方法はありますか? 2) StreamProxy を Android 8 に適応させる方法は?

どんなアイデアでも大歓迎です。

ありがとう

0 投票する
6 に答える
7743 参照

c++ - std::ifstreamバッファキャッシング

私のアプリケーションでは、ソートされたファイルをマージしようとしているので(もちろん、それらをソートしたままにします)、両方のファイルの各要素を反復処理して、最小値を3番目のファイルに書き込む必要があります。これは、他に選択肢がない限り(反復を実行する必要があります)、大きなファイルではかなり遅く動作します。ファイルの読み込みを最適化しようとしています。バッファリングに使用できるRAMをある程度使用できます。つまり、100Mbのようなものを一度読み取って、その後、バッファに要素がなくなるまでそのバッファで作業できるようになるたびに、両方のファイルから4バイトを読み取る代わりに、バッファを再度補充します。しかし、ストリームがすでにそれを行っている場合、それは私にもっとパフォーマンスを与えるでしょうか、そして何か理由がありますか?fstreamがそうする場合、多分私はそのバッファのサイズを変更することができますか?

追加した

私の現在のコードはそのように見えます(擬似コード)

私がここで嫌いなのは

  • seek_back-4バイトをピークする方法がないため、前の位置にシークバックする必要があります
  • ファイルからの読み取りが多すぎます
  • ストリームの1つがEOFにある場合でも、別のストリームのコンテンツを直接出力するのではなく、そのストリームをチェックし続けますが、チャンクサイズはほとんど常に等しいため、これは大きな問題ではありません。

その改善を提案できますか?

ありがとう。

0 投票する
1 に答える
136 参照

php - ループ内での PHP テンプレートのバッファリング

私は基本的に、クエリでループを実行し、PHP のバッファリングを使用してテンプレート ファイルをループに挿入しています。問題は、クエリに複数の結果がある場合、2 つ以上の同一の結果になることです (mysql 結果行の次のデータではなく、同じデータをループします)。

関数...

テンプレートは次のようになります。

したがって、2 つのレコードがある場合:

私はで終わる

それ以外の

私はすでに試しました

$returnString を関数から取り出して無駄に...

考え?

0 投票する
1 に答える
1127 参照

javascript - HTML5オーディオ要素でバッファリングがいつ終了したかを判断する方法

loadCompleteHTML5オーディオ要素からのバッファリングがいつ終了したかを判断しようとしていますが、これまでのところ、同様のイベントは見つかりません。進行状況イベントを使用してみましたが、ダウンロードが終了しても起動しません。ダウンロード中のみであるため、これを使用して確認することはできません。私も標準loadイベントを試しましたが、まったく発火しないようです。

バッファリングが終了したかどうかを確認できる他のイベントはありますか、それともタイマーを使用して確認を続ける必要がありa.buffered.end(0) == a.durationますか?

ありがとう、

0 投票する
1 に答える
5223 参照

java - FileChannel#forceとバッファリング

今、それを明確にして、FileOutputStreamとFileChannelの間にいくつかの類似点を描きたいと思います。

したがって、まず第一に、標準のJava ioでファイルを書き込む最も効率的な方法は、BufferedOutputStreamでラップされたFileOutputStreamを使用することであるように思われます。自動的にフラッシュするため、内部バッファがオーバーフローした場合。配列の書き込みだけでなく、シングル書き込み(シングルバイト、フロートなど)も実行でき、速度を気にしないと便利です。決して忘れてはならない唯一のことは、それを閉じることです(最後のフラッシュを実行するため)。BufferedOutputStreamラッパーを使用する利点は明らかであり、すべての人にとって必要です(私は願っています)。

次にFileChannelについて。FileChannelには、FileOutputStreamのflushと同等のforceメソッドがありますね。そしてjavadocsは、ターゲットファイルに変更が加えられたことを確認するためにそれを使用する必要があることを明確に述べています。しかし、「BufferedFileChannel」ラッパーがない場合、いつ、なぜそれを使用する必要があるのか​​わかりません。言い換えれば、FileChannelのバッファリングはどこにありますか?それは自動で、BufferedOutputStreamのようにFileChannel自体に隠されていますか?そうでない場合は、強制するものがないため(writeメソッドを使用した後、すべての変更がファイルにすでに適用されているため)、なぜforceメソッドが必要になるのでしょうか。また、自分でバッファリングを実装する必要がありますか?