先來看看HTML5的音檔怎麼用吧!
<audio src="someaudio.mp3" controls>
</audio>
這就是瀏覽器上最陽春的音檔撥放器了。 |
決定播放什麼關鍵就在 src 得到的URL。(controls是指顯示內建操作板)
讓我們回憶一下前篇圖片檔的狀況其實也是差不多的,我們都需要一個URL連接到檔案位置,而圖片的URL我們是使用Google App Engine提供的Image service這樣取得的。
blobstore_key = blobstore.create_gs_key(cloud_storage_path) # 使用Blobstore API提供的create_gs_key()得到blobkey字串
blobstore_key = blobstore.BlobKey(blobstore_key) #將字串轉成BlobKey object
serving_url = images.get_serving_url(blobstore_key) # 使用images.get_serving_url()從blobkey得到圖片的image serving URL
Image service方便我們對圖像做各種操作,另外讓我們的圖像有個公開的public URL可以讀取,如此即使在Google Cloud Storage檔案設定非公開也有一個管道能讓Client端的瀏覽器可以讀取 (一般預設都是只有專案應用server端以及專案擁有者可以讀取)。那…在音檔方面是否也有Audio service之類的服務呢? 答案是沒有啦 ~ (也可能是我找不到啦)
這意味著我們要來將我們的音檔設定公開。
就我所知,有兩種方法:
先講一下重點,Public URL會是長這樣:https://storage.googleapis.com/[BucketName]/[FileName]
1. 若檔案已經先存在雲端,可以在console端手動設定:
左側選單選擇Storage,就可以看到在Google Cloud Storage目前有哪些bucket,點選進bucket可以看到檔案,點選檔案最右邊的三點後,選擇編輯權限,點選新增項目,左到右的設定為:使用者、allUsers、讀取者,之後按儲存就會看到公開存取權轉為公開且旁邊有個連結,即public URL。
2. 儲存時設定權限:
在 cloudstorage.open() 時可以在 options 加入 'x-goog-acl' 的設定來修改權限 (預設是'private'),若我們要設定公開讀取則設定為 'x-goog-acl': 'public-read'。(詳細權限設定看這:https://cloud.google.com/storage/docs/xml-api/reference-headers#xgoogacl)
gcs_file = cloudstorage.open(filename, 'w', content_type='text/plain', options={'x-goog-acl': 'private'})
好啦~如此我們的<audio>就能使用在Google Cloud Storage的影音檔了。
<audio src="https://storage.googleapis.com/[BucketName]/[FileName]" controls>
</audio>
但關於Google Cloud Storage存取影音檔的故事還未結束…
請接續看下篇 [GAE] 實作Blob URL與簡單的影音串流 。
沒有留言:
張貼留言