目前系統只支持 mp3 格式的音頻
函數列表
要上傳一個音頻需要調用 Create Chunks Chunk Merge 五個接口
在步驟1中如果服務器發現已經存在相同的資產,將直接創建已有資產的副本並將其設置爲 Submit 狀態,此時客戶端不需要執行步驟 2 3 4
所有登入的用戶都可以調用下述函數
審覈接口用於管理員對資產進行管理
Create 函數用於創建一個資產,其簽名如下:
rpc Create (CreateRequest) returns (CreateResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio"
body: "*"
};
}
http 路徑:
/api/v1/assets/audio
權限要求: root(1) or assets(100)
資產應該分塊上傳,以避免佔用服務器大量內存,同時可以在網路異常時爲用戶恢復上傳進度,而不需要完全重新開始上傳。
Chunks 函數用於查詢服務器已經存在的分塊,以便爲用戶恢復上傳進度
rpc Chunks (ChunksRequest) returns (ChunksResponse){
option (google.api.http) = {
get: "/api/v1/assets/audio/chunks"
};
}
http 路徑:
/api/v1/assets/audio/chunks
權限要求: root(1) or assets(100)
Chunk 用於上傳一個分塊數據
rpc Chunk (ChunkRequest) returns (ChunkResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio/chunk"
body: "*"
};
}
http 路徑:
/api/v1/assets/audio/chunk
權限要求: root(1) or assets(100)
對於 http 也可以訪問 /api/v1/assets/audio/chunk_file/{{id}}
並將二進制數據寫入 body 進行上傳
此外也可以使用 在線工具 測試上傳功能
當資產所有分塊都上傳到服務器後,客戶端需要調用 Merge 函數通知服務器將分塊合併並將資產提交給管理員審覈
rpc Merge (MergeRequest) returns (MergeResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio/merge"
body: "*"
};
}
http 路徑:
/api/v1/assets/audio/merge
權限要求: root(1) or assets(100)
此外也可以使用 在線工具 測試上傳功能
Submit 函數用於將資產提交給管理員審覈:
rpc Submit (SubmitRequest) returns (SubmitResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio/submit/{id}"
};
}
http 路徑:
/api/v1/assets/audio/submit/{id}
權限要求: root(1) or assets(100)
ListDraft 函數用於查詢用戶查詢自己處於 Draft 狀態的資產,以便繼續未完成的上傳工作:
rpc ListDraft (ListRequest) returns (ListResponse){
option (google.api.http) = {
get: "/api/v1/assets/audio/drafts/{uid}"
};
}
http 路徑:
/api/v1/assets/audio/drafts/{uid}
權限要求: session
DeleteDraft 函數用於用戶刪除自己處於 Draft 狀態的資產,通常是用戶上傳了錯誤的檔案故想要放棄上傳:
rpc DeleteDraft (DeleteDraftRequest) returns (DeleteDraftResponse){
option (google.api.http) = {
delete: "/api/v1/assets/audio/drafts/{id}"
};
}
http 路徑:
/api/v1/assets/audio/drafts/{id}
權限要求: session
ListReject 函數用於查詢用戶查詢自己處於 Reject 狀態的資產,以便知道管理員爲何拒絕了審覈:
rpc ListReject (ListRequest) returns (ListResponse){
option (google.api.http) = {
get: "/api/v1/assets/audio/rejects/{uid}"
};
}
http 路徑:
/api/v1/assets/audio/rejects/{uid}
權限要求: session
DeleteReject 函數用於用戶刪除自己處於 Reject 狀態的資產:
rpc DeleteReject (DeleteRejectRequest) returns (DeleteRejectResponse){
option (google.api.http) = {
delete: "/api/v1/assets/audio/reject/{id}"
};
}
http 路徑:
/api/v1/assets/audio/reject/{id}
權限要求: session
Find 函數用於查詢系統存在的資產,以及資產目前的狀態:
rpc Find (FindRequest) returns (FindResponse){
option (google.api.http) = {
get: "/api/v1/assets/audio"
};
}
http 路徑:
/api/v1/assets/audio
權限要求: session
ID 函數用於通過 id 快速查詢系統存在的資產,以及資產目前的狀態:
rpc ID (IDRequest) returns (IDResponse){
option (google.api.http) = {
get: "/api/v1/assets/audio/by_id"
};
}
http 路徑:
/api/v1/assets/audio/by_id
權限要求: session
Download 函數用於下載資產:
rpc Download (DownloadRequest) returns (stream google.api.HttpBody){
option (google.api.http) = {
get: "/api/v1/assets/audio/download/{id}"
};
}
http 路徑:
/api/v1/assets/audio/download/{id}
權限要求: session
默認下載上傳的音頻資源,但你可以傳入可選的查詢參數 file=1 來下載檔案直播存儲的音頻記錄,或者 file=2 下載即時直播存儲的音頻記錄
/api/v1/assets/audio/download/{id}?file=1
/api/v1/assets/audio/download/{id}?file=2
Resolve 用於將一個處於 Submit 狀態的資產設置爲 Post 狀態
rpc Resolve (ResolveRequest) returns (ResolveResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio/resolve/{id}"
};
}
http 路徑:
/api/v1/assets/audio/resolve/{id}
權限要求: root(1) or reviewer_assets(120)
Reject 用於將一個處於 Submit 狀態的資產設置爲 Reject 狀態
rpc Reject (RejectRequest) returns (RejectResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio/reject/{id}"
};
}
http 路徑:
/api/v1/assets/audio/reject/{id}
權限要求: root(1) or reviewer_assets(120)
Disable 用於將一個處於 Post 狀態的資產設置爲 Disable 狀態
rpc Disable (DisableRequest) returns (DisableResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio/disable/{id}"
};
}
http 路徑:
/api/v1/assets/audio/disable/{id}
權限要求: root(1) or reviewer_assets(120)
Recover 用於將一個處於 Disable 狀態的資產設置爲 Post 狀態
rpc Recover (RecoverRequest) returns (RecoverResponse){
option (google.api.http) = {
post: "/api/v1/assets/audio/recover/{id}"
};
}
http 路徑:
/api/v1/assets/audio/recover/{id}
權限要求: root(1) or reviewer_assets(120)
Delete 用於將一個處於 Post/Disable 狀態的資產設置爲 Delete 狀態
rpc Delete (DeleteRequest) returns (DeleteResponse){
option (google.api.http) = {
delete: "/api/v1/assets/audio/{id}"
};
}
http 路徑:
/api/v1/assets/audio/{id}
權限要求: root(1) or reviewer_assets(120)