2

response.out を使用してアプリケーションから mp3 ファイルを提供していますが、動作しているように見えますが、ファイルが html5 スクリプトで使用されている場合、またはプラグインを使用して Web ブラウザーで再生されている場合、mp3 ファイルは最初は正しく再生されますが、巻き戻してもう一度再生しようとしましたが、もう機能しません。

同じファイルを静的ファイルとして配置すると、すべて正常に動作します。

これは、response.out から提供するファイルの URL です (初回のみ再生され、巻き戻しはありません)。

http://traki.eledit.net/media/ps/101_4.mp3

そして、これは静的ページとして提供される同じファイルの URL です (これは常に機能します)。

http://traki.eledit.net/static/test2.mp3

両方のファイルがダウンロードされると、それらは同一になります。

両方のファイルの http ヘッダーを確認すると、ほぼ同じ結果が得られます。

http://www.webconfs.com/http-header-check.php?url=http://traki.eledit.net/media/ps/101_4.mp3&submit=submit

http://www.webconfs.com/http-header-check.php?url=http://traki.eledit.net/static/test2.mp3&submit=submit

2 つのファイルの動作が異なる理由を知っている人はいますか? response.out で提供されるファイルが静的ページとして提供されるファイルと同じように動作するようにするには、他に何をすればよいですか?

4

2 に答える 2

1

巻き戻しまたはシーク時にブラウザが範囲リクエストをアプリに送信しようとしている可能性があり、スクリプトはこれを処理するように構築されていません。これを確認するには、リクエストログを確認するか、各リクエストのリクエストヘッダーをログに記録するか、ブラウザの開発ツールを使用して確認します。

これが当てはまる場合は、ブラウザのバイト範囲ヘッダーを調べて追跡し、ファイルの要求された部分のみを返す必要があります。

于 2012-07-24T05:37:07.090 に答える
0

静的 mp3 ファイルのContent-Typeヘッダーと一致するようにヘッダーを変更してみてください。

self.response.headers['Content-Type'] = 'audio/mpeg'
self.respone.out.write(mp3_file)
于 2012-07-23T17:01:28.880 に答える