「パーサーを使用するには、ストリーミングされたオーディオ ファイルから取得したデータをパーサーに渡します。パーサーがオーディオ データの完全なパケットまたは完全なプロパティを取得すると、コールバックが呼び出されます。次に、コールバックは、解析されたデータを再生したり、ディスクに書き込んだりして処理します。" 「完全なパケット」と「完全なプロパティ」が何であるかわかりません。私はあなたの助けが必要です、ありがとう。
1 に答える
オーディオ ファイルのデータは段階的に入ってきます。データをパーサーにフィードします。「十分な」データが存在すると、ユーザー提供のコールバックを介してデータが返されます。
類推: テキスト ファイルを 1 行ずつ読み取りたい場合、読み取り時にパーサー データ バイトをフィードします。1 行は何バイトですか? これは、多くの要因によって異なります (たとえば、テキスト ファイルの内容は何ですか? ファイルのエンコーディングは何ですか? 行の長さを予測する方法はありますか?)。この場合、次の行を返すのに十分なデータが存在するときに通知されます。
したがって、オーディオ ファイル ストリーム API は、多くのオーディオ ファイル形式を処理できる抽象化です。一部の形式では、サンプル データ (またはその他のデータ/プロパティ) がさまざまなサイズのバイト数で格納されます。通常、PCM 形式 (たとえば) は、ファイルのヘッダーで指定された幅の連続したインターリーブされた値ですが、圧縮形式のパケット サイズは大きくなる傾向があります。また、一部のプロパティ/パケットは可変長であるため、入力したデータの量に基づいていつコンバーターにデータを要求するかを合理的に判断することはできません.解析、デコード、および変換は API の仕事です。バイナリ入力に基づいてデコードおよびプルする必要がある場合、これらすべてのファイル形式のパーサー/デコーダー/コンバーターには長い時間がかかります。
したがって、データを受信/読み取るときにプッシュし、「使用可能な」量があるときにプッシュします。