私はあなたと同じ問題に遭遇しました。torrent をシーケンシャル ダウンロードに設定するということは、部分がある程度順序付けられた方法でダウンロードされることを意味します。これは、ストリーミングの直感的なソリューションかもしれません。ただし、ビデオのストリーミングは、すべての部分を順番にダウンロードするよりも複雑です。
ビデオ ファイルは、さまざまなコンテナー (mkv、mp4、avi など) とさまざまなコード (h264、theora など) で提供されます。一部のコーデック/コンテナは、ファイル内の異なる場所にメタデータ/ヘッダーを保存します。頭のてっぺんから思い出せませんが、特定のコンテナ/コーデックはすべてのヘッダー情報をファイルの最後に保存します。このようなファイルは、連続してダウンロードするとうまくストリーミングできない場合があります。
ストリーミングを開始するために必要な部分を決定するためのコードを作成しない限り、既存のメカニズムに依存する必要があります。たとえば、Mplayer のブラウザー ビデオ プレーヤー VLC を生成する Peerflix を考えてみましょう。これらのアプリケーションは、さまざまなコンテナー/コーデックに必要なバイト範囲を把握しています。Peerflix が VLC を起動して AVI ファイルを再生すると、VLC は最初の数バイトと最後の数バイト (ヘッダー) を読み取ろうとします。
Peerflix の背後にある天才は、独自の Web サーバーを介してビデオ ファイルを提供しようとするため、VLC が求めているファイルのバイト範囲を認識していることです。次に、バイト範囲がどの部分に該当するかを判断し、それらの部分に優先順位を付けます。Peerflix は Node.js BitTorrent ライブラリを使用していますが、その正確な優先順位付けメカニズムは私にはわかりません。ただし、libtorrent-rasterbar の場合、set_piece_deadline() 関数を使用すると、必要な部分をライブラリに通知できます。私の経験では、必要なピースを決定したら、短い期限 (50 ミリ秒程度) で set_piece_deadline() を呼び出し、到着を待ちます。set_piece_dealine() の使用は、順次ダウンロードと互換性がないことに注意してください (単に false に設定してください)。
注意すべきことの 1 つは、libtorrent-rasterbar は、ピースを取得してもすぐにハード ドライブに書き込まないことです。これは、作品が到着したときにファイルからそのバイト範囲を読み取ろうとしたために陥った罠です。このためには、スレッドを実行して libtorrent-rasterbar がアプリケーションに渡すアラートをキャッチする必要があります。具体的には、read_piece_alert でそのピースの生のバイナリ データを受け取ります。