如何使用Blobstore API播放存储在GCS中的视频文件(流式传输而非下载)

1 投票
1 回答
1380 浏览
提问于 2025-04-18 09:00

如何在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来在我的网站上播放视频。

撰写回答