2012-02-02 32 views
4

私のウェブサーバーから.OGG(または.mp3)ファイルをストリーミングするプロジェクトに取り組んでいます。私はファイル全体をダウンロードして再生する必要はないと思っています。純粋なPythonでこれを行う方法はありますか(GStreamerなし - 本当にクロスプラットフォームにしたいと思っています)? urllibを使って一度にファイルのチャンクをダウンロードし、PyGameにロードして実際のオーディオ再生を行う方法はありますか?Pythonを使用したオーディオストリーミング(GStreamerなし)

ありがとうございます!

+0

私は同様のコーナーにいます。私は、オーディオファイルをベース64のチャンクに変換して、ネットワーク上で再変換してクライアントが再生できるかどうかを確認しようとしています。 – Blazer

+1

GStreamerがクロスプラットフォームであると聞きました。 wikipedia.org/wiki/GStreamer – Tshepang

答えて

1

あなたのサーバーがの範囲要求をサポートしているとします。あなたがしたい範囲の開始バイトと終了バイトでヘッダによって範囲をサーバーに尋ねる:

import urllib2 

req = urllib2.Request(url) 
req.headers['Range'] = 'bytes=%s-%s' % (startByte, endByte) 
f = urllib2.urlopen(req) 

f.read() 

あなたはfile objectを実装し、常にサーバーからファイルのちょうど必要なチャンクをダウンロードすることができます。ほぼすべてのライブラリはファイルオブジェクトを入力として受け入れます。

ネットワーク遅延のためにおそらく遅くなります。ファイルの大きな断片をダウンロードしたり、ファイルを別のスレッドなどにプリロードしたりする必要があります。つまり、ストリーミングクライアントロジックを自分で実装する必要があります。

関連する問題