【发布时间】:2013-04-25 01:19:42
【问题描述】:
我有一个简单的视频共享网站,可以上传视频并将它们作为 blobReferenceProperty() 存储在数据存储中。现在我正在查询该视频的数据存储区并尝试将其嵌入/播放到 html 5 视频标签中。看来我现在需要找到存储在 blobstore 中的视频的路径,因为 html 5 视频标签需要一个路径。
问题是从 blobstore 中查询的视频以 blob_key 的形式返回。有谁知道如何获取 blob_key 的路径,以便它可以由 html 5 视频标签播放。
class Videos(db.Model):
videoID = db.IntegerProperty()
content = blobstore.BlobReferenceProperty()
vids = db.GqlQuery("SELECT * FROM Videos WHERE videoID = :1", v_id)
for v in vids:
vid_key = v.content
现在我想要 vid 密钥的路径,所以我可以把它放在 ????是
<video controls>
<source src="????" type="video/mp4">
<p>Your browser does not support the HTML5 video element.</p>
</video>
有什么想法吗?
[编辑]
我已经有一个像这样的下载处理程序
class Play(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, vid_id):
vid_key = None
vids = db.GqlQuery("SELECT * FROM Videos WHERE videoID = :1", int(vid_id))
for v in vids:
vid_key = v.content
if (vid_key == None):
self.error(404)
else:
self.send_blob(vid_key)
现在我的代码全屏播放视频,我想切换它以播放嵌入在我网站中的 html 5 视频标签中的视频。在同一页面上有 cmets 和评级
【问题讨论】:
-
您似乎将处理程序用作响应页面 - 因此,当您尝试获取 url 时,它会直接转到视频 url。尝试使用调用处理程序的单独响应页面。如果你有问题我可以尝试提供一个代码示例
-
是的,我将其用作响应页面。但我认为这就是我想做的。而不是通过代码提供视频:self.send_blob(vid_key) - 我想设置一些变量,我们将其称为“路径”作为 blob_key 的路径。将它分离到另一个响应页面对我有什么帮助?
-
我想通了。提供视频时,它给了我视频的网址。我获取了该 url 并在每个单独的视频 ID 中进行了替换,以动态地为 HTML 视频标签提供源。感谢您的所有帮助
-
太棒了,很高兴你能够让它工作。
-
@ScottB 你能帮我解决一个very similar issue
标签: google-app-engine python-2.7 google-cloud-datastore html5-video blobstore