2019年4月16日 星期二

[GAE] 使用Google Cloud Storage存取影音檔

  既前一篇[GAE] 使用Google Cloud Storage存取圖片,就讓我想來試試mp3影音檔,而這篇就是我在使用Google雲端存取影音檔做的各種嘗試的一個紀錄,此篇主要是記錄如何設定檔案公開。

  先來看看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與簡單的影音串流 。

沒有留言:

張貼留言