如何使用Blobstore API播放存储在GCS中的视频文件(流式传输而非下载)
如何在GCS(谷歌云存储)中播放(而不是下载)一个视频文件?这个文件是通过Blobstore API在GAE Python中存储的。现在,当我在前端使用send_blob返回的URL时,视频会被下载。
我用以下方式提供视频:
video_url = "/v?video_id="+video_blobkey
::
class GCSFileServe(blobstore_handlers.BlobstoreDownloadHandler):
def get (self):
blob_key = self.request.get('video_id')
self.send_blob(blob_key)
::
app = webapp2.WSGIApplication([
('/', MainHandler),
('/v', GCSFileServe),
], debug=True)
我上传视频并存储blobkey:
filename = bucket + "/user_video_"+str (user_index) + "_" + str (i)
gcs_file = gcs.open (filename, 'w', content_type = 'video/avi')
gcs_file.write (video)
gcs_file.close ()
blobstore_filename = '/gs' + filename
video_blobkey = blobstore.create_gs_key (blobstore_filename)
在前端,我把视频的URL传给TINY Box 2 jquery模态插件。如果我提供的是YouTube的URL,这个方法运行得很好,但如果是上传到GCS的视频就不行。
我看到过GCS文档中的流式传输主题,但不太明白如何在这个情况下使用它(如果这就是解决方案的话)。
1 个回答
1
最后,我自己搞明白了。其实,我播放视频的方式没有问题。问题出在我使用的Galleria jquery插件上。这个插件可以播放YouTube上的视频,还有一些其他网站的视频,但如果你指定一个不同的链接(比如自己托管的视频文件),它就不行了。
解决办法
我换用了Videojs来在我的网站上播放视频。