上傳影片
更新時間:2026-09-17 23:48:10
伺服端上傳推薦使用:Java上傳SDK。
介面描述及限制
- 上傳影片
- 介面支援https協定
- 該介面無需傳遞 sign 參數,而是透過傳遞 writetoken 參數來進行驗簽。
- 介面呼叫有頻率限制,詳細請查看
- 傳入
vid參數可替換既有影片(原 vid 不變),詳見下文替換影片
介面請求方式及URL
POST
http://v.polyv.net/uc/services/rest?method=uploadfile
回傳結果支援格式
JSON
請求參數
| 參數名 | 必填 | 類型及範圍 | 說明 |
|---|---|---|---|
| writetoken | true | string | 使用者的寫入資料金鑰,取得方式可參考 【取得金鑰】 |
| JSONRPC | true | string | json格式,{"title": "標題", "tag":"標籤","desc":"描述"} |
| Filedata | true | file | file類型,支援的檔案格式為:.flv,.avi,.mpg,.mp4,.wmv,.mov,.3gp,.asf等 |
| fcharset | false | string | 當fcharset設為'ISO-8859-1'時,可以避免影片的檔案名稱亂碼 |
| cataid | false | long | 設定上傳影片的分類,分類的id可以在管理後台的「分類影片列表」頁面中取得,如下圖所示。不傳該參數時,新上傳影片進入「預設分類」;替換影片時則保持原影片的分類不變。 |
| luping | false | int | 是否錄影優化。當值為1時,上傳的影片不再採取預設的壓縮編碼機制,影片尺寸不再壓縮,保證影片的清晰度。預設值為0 |
| format | false | string | 預設回傳json格式,如果format=xml回傳xml格式 |
| jsonp | false | string | 例如,正常情況{error:0,data:””},加 jsonp=a後回傳a({error:0,data:””}) |
| fileMd5 | false | string | 檔案校驗碼,為32位大寫MD5的值 |
| watermark | false | string | 自訂浮水印圖片位址,圖片格式必須是png格式,支援http、https。 |
| watermarkLocation | false | string | 自訂浮水印圖片位置,如沒該參數,則自訂浮水印的顯示情況跟隨分類和帳號。1:左上角;2:右上角;3:左下角;4:右下角 |
| state | false | string | 使用者自訂資料,如果提交了該欄位,會在上傳完成回呼時透傳回傳。 |
| vid | false | string | 要替換的影片vid,傳入該參數即執行替換影片(原vid不變),不傳則上傳為新影片。支援兩種格式:完整vid(如 36e77ba39cc4768ab541cb6bf4f775a0_3)或32位影片id(如 36e77ba39cc4768ab541cb6bf4f775a0)。可放在URL參數中,也可放在JSONRPC報文中傳入。詳見下文替換影片。 |
取得分類ID的方法如下圖所示:

替換影片
傳入 vid 參數即執行替換影片:本次上傳的新檔案將替換該 vid 指向的既有影片,原 vid 保持不變,客戶端可繼續複用既有影片標識。替換後的處理鏈路(重新轉碼、加密、重新整理CDN快取等)與點播管理後台的「替換影片」功能一致。
替換規則:
- 替換成功後介面回傳的 vid 與原 vid 相同,影片內容更新為新上傳的檔案。
- 原影片的以下設定會自動繼承,替換後保持不變:
- 影片外鏈(publish_url)
- 課件(PPT)、字幕、子影片
- 播放密碼、問答設定、播放授權、試看時長
- 微信分享頁設定(分享標題、封面圖、簡介、頁面模板、底部按鈕等)
- 以下資訊按新檔案重新產生,不受原影片影響:解析度、碼率檔位、時長、原始檔大小、影片截圖、播放位址。
- 分類:請求中傳了
cataid則移動到指定分類;不傳則保持原影片的分類不變。 - 儲存空間按新舊原始檔大小的差值計算,不會重複累加佔用。
- 替換後影片狀態回到「等待編碼/正在編碼」,處理完成後透過上傳完成回呼通知(
state參數透傳回傳),也可透過回傳結果中的md5checksum欄位核對新檔案是否上傳完整。
替換限制(與點播管理後台一致):
| 限制說明 | 回傳錯誤碼 |
|---|---|
| 目標影片不存在,或不屬於目前 writetoken 對應的帳號 | 26 |
| 直播轉存產生的影片不支援替換 | 27 |
| 影片目前狀態不允許替換(如已刪除、轉碼中、等待審核等) | 28 |
| 影片存在未完成的轉碼任務,請等待處理完成後再替換 | 29 |
注意:替換影片會覆蓋原影片內容,替換完成後無法恢復為原影片,請謹慎操作。
替換影片請求範例:
vid 放在URL參數中:
http://v.polyv.net/uc/services/rest?method=uploadfile&vid=36e77ba39cc4768ab541cb6bf4f775a0_3
vid 也可以放在JSONRPC報文中傳入:
{"title": "新标题", "vid": "36e77ba39cc4768ab541cb6bf4f775a0_3"}
注意事項
上传视频接口POST不能携带cookie
上传的视频不能大于 2G
返回错误列表
| 回傳 | 說明 |
|---|---|
| 0 | 無錯誤 |
| 1 | 找不到writetoken關聯的user |
| 2 | 檔案為空或者writetoken為空 |
| 3 | 提交的json名字JSONRPC為null |
| 4 | 提交檔案格式不正確 或 影片大於 2G |
| 5 | readtoken為空 |
| 6 | 分頁輸入出錯 |
| 7 | vid不能為空 |
| 8 | 找不到方法名 |
| 14 | 檔案md5校驗失敗 |
| 15 | 後台處理出錯 |
| 16 | 使用者的可用空間已用完 |
| 26 | 替換影片時,目標影片不存在或不屬於目前帳號 |
| 27 | 替換影片時,直播轉存的影片不支援替換 |
| 28 | 替換影片時,影片目前狀態不允許替換 |
| 29 | 替換影片時,影片存在未完成的轉碼任務 |
回傳結果
<xml>
<error>0</error>
<total/>
<data>
<video>
<md5checksum>
<![CDATA[ 44b145c6bea7dd826191990dfb38d1fd ]]>
</md5checksum>
<tag>
<![CDATA[ 标签 ]]>
</tag>
<mp4>
<![CDATA[http://mpv.videocc.net/36e77ba39c/0/36e77ba39cc4768ab541cb6bf4f775a0_1.mp4]]>
</mp4>
<title>
<![CDATA[ upload上传视频 ]]>
</title>
<df>2</df>
<times>
<![CDATA[ 0 ]]>
</times>
<mp4_1>
<![CDATA[http://mpv.videocc.net/36e77ba39c/0/36e77ba39cc4768ab541cb6bf4f775a0_1.mp4]]>
</mp4_1>
<vid>
<![CDATA[ 36e77ba39cc4768ab541cb6bf4f775a0_3 ]]>
</vid>
<mp4_2>
<![CDATA[http://mpv.videocc.net/36e77ba39c/0/36e77ba39cc4768ab541cb6bf4f775a0_2.mp4]]>
</mp4_2>
<cataid>
<![CDATA[ 1 ]]>
</cataid>
<swf_link>
<![CDATA[http://player.polyv.net/videos/36e77ba39cc4768ab541cb6bf4f775a0_3.swf]]>
</swf_link>
<status>
<![CDATA[ 10 ]]>
</status>
<seed>1</seed>
<flv2>
<![CDATA[http://plvod01.videocc.net/36e77ba39c/0/36e77ba39cc4768ab541cb6bf4f775a0_2.flv]]>
</flv2>
<flv1>
<![CDATA[http://plvod01.videocc.net/36e77ba39c/0/36e77ba39cc4768ab541cb6bf4f775a0_1.flv]]>
</flv1>
<sourcefile>
<![CDATA[ ]]>
</sourcefile>
<playerwidth>
<![CDATA[ 600 ]]>
</playerwidth>
<hls/>
<default_video>
<![CDATA[http://plvod01.videocc.net/36e77ba39c/0/36e77ba39cc4768ab541cb6bf4f775a0_1.flv]]>
</default_video>
<duration>
<![CDATA[ 00:00:33 ]]>
</duration>
<filesize/>
<first_image>
<![CDATA[http://img.videocc.net/uimage/3/36e77ba39c/0/36e77ba39cc4768ab541cb6bf4f775a0_0.jpg]]>
</first_image>
<original_definition>
<![CDATA[ 672x378 ]]>
</original_definition>
<context>
<![CDATA[ 视频文档描述 ]]>
</context>
<previewVid>
<![CDATA[ m63c44pl69mm7435lp871mp3pn7n448l0_6 ]]>
</previewVid>
<playerheight>
<![CDATA[ 490 ]]>
</playerheight>
<ptime>
<![CDATA[ 2017-12-04 10:36:18 ]]>
</ptime>
</video>
</data>
</xml>
Java請求範例
快速接入基礎程式碼請下載相關依賴原始碼, 點擊下載原始碼 ,下載後加入到自己的原始碼工程中即可。測試案例中的**HttpUtil.java 包含在下載檔案中。
強烈建議您使用點播Java SDK完成API的功能對接,點播Java SDK 對API呼叫邏輯、異常處理、資料簽名、HTTP請求執行緒池進行了統一封裝和最佳化。
private static final Logger log = LoggerFactory.getLogger(VodVideoUploadTest.class);
/**
* 上传点播视频
*/
@Test
public void testUpload() throws Exception, NoSuchAlgorithmException {
//业务参数
String url = "http://v.polyv.net/uc/services/rest?method=uploadfile";
String writeToken = super.writeToken;
Map<String, String> requestMap = new HashMap<>();
requestMap.put("writetoken", writeToken);
requestMap.put("JSONRPC", "{\"title\": \"标题\", \"tag\":\"标签\",\"desc\":\"描述\"}");
Map<String, File> fileMap = new HashMap<>();
fileMap.put("Filedata",new File("E:\\polyv\\polyv.mp4"));
String response = HttpUtil.postFile(url,requestMap,fileMap,null);
log.debug("测试上传点播视频,{}", response);
//do somethings
}
JSON範例
{
error: "0",
data: [
{
images_b: [
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_0_b.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_1_b.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_2_b.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_3_b.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_4_b.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_5_b.jpg"
],
md5checksum: "44b145c6bea7dd826191990dfb38d1fd",
tag: "标签",
mp4: "http://mpv.videocc.net/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_1.mp4",
title: "标题",
df: 2,
times: "0",
mp4_1: "http://mpv.videocc.net/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_1.mp4",
vid: "36e77ba39c0e5dac84dba418d81a793d_3",
mp4_2: "http://mpv.videocc.net/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_2.mp4",
cataid: "1",
swf_link: "http://player.polyv.net/videos/36e77ba39c0e5dac84dba418d81a793d_3.swf",
source_filesize: 2295887,
status: "10",
seed: 1,
flv2: "http://plvod01.videocc.net/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_2.flv",
flv1: "http://plvod01.videocc.net/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_1.flv",
sourcefile: "",
playerwidth: "600",
hls: [
"http://hls.videocc.net/36e77ba39c/3/36e77ba39c0e5dac84dba418d81a793d_1.m3u8",
"http://hls.videocc.net/36e77ba39c/3/36e77ba39c0e5dac84dba418d81a793d_2.m3u8"
],
default_video: "http://plvod01.videocc.net/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_1.flv",
duration: "00:00:33",
filesize: [
0,
0
],
first_image: "http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_0.jpg",
original_definition: "672x378",
context: "描述",
images: [
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_0.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_1.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_2.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_3.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_4.jpg",
"http://img.videocc.net/uimage/3/36e77ba39c/d/36e77ba39c0e5dac84dba418d81a793d_5.jpg"
],
previewVid: "363c44pl69m0c8klm57kpl715k51l496k_6",
playerheight: "490",
ptime: "2017-12-04 11:12:50"
}
]
}
欄位說明
| 欄位 | 說明 |
|---|---|
| swf_link | Flash連結位址 |
| tag | 標籤 |
| mp4 | 影片位址 |
| playerwidth | 影片寬度 |
| title | 影片標題 |
| duration | 影片時長 |
| first_image | 影片截圖 |
| times | 點擊次數 |
| context | 影片描述 |
| images | 所有截圖 |
| previewVid | 預覽影片VID |
| playerheight | 影片高度 |
| ptime | 上傳時間 |
| vid | 影片id |
| cataid | 分類id, 如1為根目錄 |
| default_video | 使用者預設播放影片 |
| df | 影片碼率數 |
| flv1 | 流暢碼率flv格式影片位址 |
| flv2 | 高清碼率flv格式影片位址 |
| flv3 | 超清碼率flv格式影片位址 |
| mp4_1 | 流暢碼率mp4格式影片位址 |
| mp4_2 | 高清碼率mp4格式影片位址 |
| mp4_3 | 超清碼率mp4格式影片位址 |
| hls1 | 流暢碼率hls格式影片位址 |
| hls2 | 高清碼率hls格式影片位址 |
| hls3 | 超清碼率hls格式影片位址 |
| hlsIndex | 自適應碼率hls播放位址 |
| images_b | 影片截圖大圖位址 |
| seed | 加密影片為1,非加密為0 |
| status | 影片狀態 |
| md5checksum | 上傳到POLYV雲平台的影片原始檔的MD5值,可以用來校驗是否上傳錯誤或完整 |
| 影片狀態碼 | 含義 |
|---|---|
| 60/61 | 已發佈 |
| 10 | 等待編碼 |
| 20 | 正在編碼 |
| 40 | 影片處理失敗 |
| 50 | 等待審核 |
| 51 | 審核不通過 |
| -1 | 已刪除 |
