在使用資料處理功能時,每個Object都會觸發一個任務,任務中需要指定處理後的檔案儲存路徑。為了避免檔案覆蓋,需要保證輸出路徑為動態路徑。您可以在輸出路徑中引用源檔案的資訊,如Bucket、檔案名稱、上傳時間等。例如:將視頻截幀任務的輸出路徑指定為oss://test-bucket/{dirname}/{barename}_output.{autoext},將目標檔案儲存到源檔案所在目錄下,檔案名稱為源檔案名稱_output,並自動添加尾碼。
使用情境
控制台使用情境
任務:處理任務可在輸出路徑中引用源檔案資訊。例如:文檔轉jpg圖片任務,輸出路徑設定為
oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext},處理時{autoext}將被替換為jpg,轉換產生的圖片儲存路徑為oss://test-bucket/output/源檔案目錄/源檔案名稱/圖片序號.jpg。批處理:批處理建立成功後會對每個存量檔案產生任務。為避免資料覆蓋,建議在輸出路徑中設定變數。例如:視頻截幀批處理將視頻截幀為png格式,輸出路徑設定為
oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext},處理時{autoext}將被替換為png,處理後產生的png圖片儲存路徑為oss://test-bucket/output/源檔案目錄/源檔案名稱/圖片序號.png。觸發器:觸發器建立成功後會對每個新增檔案產生任務。為避免檔案覆蓋,建議在輸出路徑中設定變數。例如:文檔轉換觸發器將文檔轉換為jpg圖片格式,將輸出路徑設定為
oss://test-bucket/output/{dirname}/{barename}/{index}.{autoext},處理時{autoext}將被替換為jpg,處理後產生的jpg圖片檔案儲存路徑為oss://test-bucket/output/源檔案目錄/源檔案名稱/圖片序號.jpg。
API使用情境
另存新檔 (
sys/saveas):另存新檔 (sys/saveas) 中的b(Bucket)和o(Object)參數支援變數。例如:您在對example.docx文檔進行文檔轉換處理時,需要將1~10頁分別轉換為png格式,可以將sys/saveas設定為b_e2J1Y2tldH0,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw(e2J1Y2tldH0是{bucket}進行Base64編碼之後的值,ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw是doc_images/{index}.png編碼之後的值),則轉換後產生的圖片儲存到源檔案相同的Bucket下,路徑為doc_images/下標.png。任務:任務的輸出路徑支援變數。例如:調用CreateOfficeConversionTask - 建立文檔轉換任務介面建立文檔轉換任務時,TargetURI參數必須填寫包含副檔名的完整輸出檔案路徑,TargetURI使用變數(例如:
oss://test-bucket/output/{dirname}/{barename}/{index}.jpg)。
注意事項
批處理和觸發器的輸出路徑以非
/結尾時,檔案名稱需要至少包含一個變數,否則多個輸出檔案將會互相覆蓋。任務的輸出路徑不支援以
/結尾的路徑,支援使用變數。
任務相關變數
同步處理和非同步處理請求的時間點也可以作為變數,例如您在2022-09-01T02:06:57.798Z時刻提交的處理請求,可以使用下表中的變數。
變數 | 說明 | 樣本值 |
t_year | 處理請求提交時的年份,格式為yyyy。 |
|
t_mon | 處理請求提交時的月份,格式為mm。 |
|
t_day | 處理請求提交時的日期,格式為dd。 |
|
t_hour | 處理請求提交時的小時,格式為HH。 |
|
t_min | 處理請求提交時的分鐘,格式為MM。 |
|
t_sec | 處理請求提交時的秒鐘,格式為SS。 |
|
圖片處理相關變數
以源檔案oss://test-bucket/path1/path2/name.png為例,該檔案上傳時間為2022-04-22 14:38:25,可以使用下表中的變數。
變數 | 說明 | 樣本值 |
bucket | 原始檔案儲存空間(Bucket)名稱。 |
|
key | 原始檔案儲存在儲存空間中的資源名。 重要 使用該變數時請避免將輸出檔案和輸入檔案設定為相同檔案,否則會覆蓋源檔案或在批處理時迴圈觸發。 |
|
dirname | 原始檔案路徑目錄。 重要 使用該變數時請避免將輸出檔案和輸入檔案設定為相同檔案,否則會覆蓋源檔案或在批處理時迴圈觸發。 |
|
barename | 原始檔案名(不包含副檔名)。 重要 使用該變數時請避免將輸出檔案和輸入檔案設定為相同檔案,否則會覆蓋源檔案或在批處理時迴圈觸發。 |
|
basename | 原始檔案名(包含副檔名)。 重要 使用該變數時請避免將輸出檔案和輸入檔案設定為相同檔案,否則會覆蓋源檔案或在批處理時迴圈觸發。 |
|
ext | 原始檔案資源的副檔名,通過自動檢測的 |
|
year | 原始檔案上傳時的年份,格式為yyyy。 |
|
mon | 原始檔案上傳時的月份,格式為mm。 |
|
day | 原始檔案上傳時的日期,格式為dd。 |
|
hour | 原始檔案上傳時的小時,格式為HH。 |
|
min | 原始檔案上傳時的分鐘,格式為MM。 |
|
sec | 原始檔案上傳時的秒鐘,格式為SS。 |
|
文檔轉換相關變數
文檔轉換處理可以使用頁碼、Sheet名稱等作為變數,例如將含有一個Sheet,Sheet名稱為sheet1的Excel文檔轉換為JPG圖片,可以使用下表中的變數。
變數 | 說明 | 樣本值 |
autoext | 文檔轉換中輸出檔案的尾碼。 |
|
index | 輸出下標,從1開始遞增,Word、PDF、PPT為頁碼,Excel中為sheetindex_sheetsubindex。 | Word、PDF、PPT為 Excel為 |
sheetname | Excel的Sheet名稱。 |
|
sheetindex | Excel的Sheet下標,從1開始。 |
|
sheetsubindex | Excel的Sheet其中部分下標,從1開始。 |
|
ApsaraVideo for Media Processing相關變數
ApsaraVideo for Media Processing可以使用容器副檔名、解析度等作為變數。例如,對video.mp4進行分區轉碼,媒體容器為ts,目標解析度為1920x1080,可以使用下表中的變數。
變數 | 說明 | 樣本值 |
autoext | ApsaraVideo for Media Processing中輸出檔案的尾碼。 |
|
index | 輸出下標,從1開始遞增,用於分區轉碼、截圖等多輸出情境。 |
|
streamindex | 音視頻流ID,音視頻流分別從0遞增。 |
|
resolution | 設定的轉碼解析度,僅視頻轉碼可用。 |
|
使用REST API
如果您的程式自訂要求較高,您可以直接發起REST API請求。直接發起REST API請求需要手動編寫代碼計算簽名。
您可以在PostObject介面中以添加處理參數或樣式參數的方式來處理檔案。更多資訊,請參見另存新檔。
樣本一:文檔格式轉換
如下REST API樣本在PostObject介面中以添加處理參數的方式對example.docx進行文檔格式轉換處理,在另存新檔 (sys/saveas) 中的b(Bucket)和o(Object)參數使用變數。
pages_MS0xMA:轉換文檔1-10頁(MS0xMA是1-10進行Base64編碼之後的值)。
target_png:將文檔轉換成png圖片格式。
source_docx:指定源檔案類型為docx。
sys/saveas:另存新檔。
b_e2J1Y2tldH0:轉碼完成後將得到的圖片使用{bucket}變數儲存到源Bucket(e2J1Y2tldH0是{bucket}進行Base64編碼後的值)。
o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw:object使用{index}變數以example.docx頁碼作為圖片檔案名稱儲存到doc_images目錄下(ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw是doc_images/{index}.png進行Base64編碼之後的值)。
POST /exmaple.docx?x-oss-async-process HTTP/1.1
Host: doc-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
// 將檔案example.docx的1-10頁轉換為PNG格式的圖片檔案,轉換後的儲存路徑為:oss://源Bucket/doc_images/頁碼.png。
x-oss-async-process=doc/convert,pages_MS0xMA,target_png,source_docx|sys/saveas,b_e2J1Y2tldH0,o_ZG9jX2ltYWdlcy97aW5kZXh9LnBuZw樣本二:視頻轉碼
如下以視頻轉碼處理情境為,對example.avi檔案進行視頻轉碼處理,配置了多個處理參數。
f_mp4:轉碼輸出媒體檔案容器為MP4。
vcodec_h265:視頻流格式為H.265。
s_1920x1080:解析度為1920x1080。
vb_2000000:視頻碼率為2 Mbps。
fps_30:視訊框架率為30 fps。
acodec_aac:音頻編碼格式為AAC。
ab_100000:音頻碼率為100 Kbps。
sn_1:禁用字幕流。
sys/saveas 另存新檔。
b_e2J1Y2tldH0:轉碼完成後將得到的檔案使用{bucket}變數儲存到源Bucket(e2J1Y2tldH0是{bucket}進行Base64編碼後的值)。
o_b3V0cHV0LnthdXRvZXh0fQ:object使用{autoext}變數自動添加尾碼,儲存後的object為output.mp4(b3V0cHV0LnthdXRvZXh0fQ是output.{autoext}進行Base64編碼後的值)。
POST /exmaple.avi?x-oss-async-process HTTP/1.1
Host: video-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
x-oss-async-process=video/convert,f_mp4,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1|sys/saveas,b_e2J1Y2tldH0,o_b3V0cHV0LnthdXRvZXh0fQ