3

couchdb我在数据库中有一些声音文件(与 web2py 无关)。我的web2py应用程序可以访问此数据库,并且我想流式传输声音文件,以便可以使用 HTML 音频标签收听它们,如下所示:

<audio src="http://www.myserver.com/.../track06.mp3" preload="auto"></audio>

我打算根据这个建议的例子来做这个流式传输:

def streamer():
    import os
    path=os.path.join(request.folder,'private','largefile.mpeg4')
    return response.stream(open(path,'rb'),chunk_size=4096)

但我有一些悬而未决的问题:

  1. 我的文件名不在本地文件系统中,而是在couchdb数据库中,可通过 REST 访问。如何打开它进行流式传输?
  2. 音频标签在激活时会发送什么样的请求,GET/POST/...?这可以处理web2py吗?

基本上,我想知道是否有人couchdb通过web2py.

4

1 回答 1

1

我现在使用的解决方案是这样的:

def open_remote_recording():
    recording_doc_id, recording_id = tuple(request.args)
    url = get_doc_url(server = RECORDINGS_SERVER, database = RECORDINGS_DATABASE, doc_id = recording_doc_id, attachment = recording_id)
    content_type = 'audio/mp3'
    f = urllib.urlopen(url)
    return f

@auth.requires_login()
def recordings():
    f = open_remote_recording()
    return response.stream(f, chunk_size=4096)

get_doc_url功能只是创建一个 url 来访问附件。content_type 是固定的,但这应该从附件中获得(我还不知道如何做到这一点)。

于 2012-08-11T12:10:41.637 回答