Skip to content

Instantly share code, notes, and snippets.

@lintianzhi
Last active August 29, 2015 14:06
Show Gist options
  • Save lintianzhi/baa7b585575bafa110b8 to your computer and use it in GitHub Desktop.
Save lintianzhi/baa7b585575bafa110b8 to your computer and use it in GitHub Desktop.

#Sewise 接口

数据流

  1. Qiniu向Sewise发送一个转码请求,返回得到一个taskid,输入文件的url包含在请求中
  2. Sewise在转码完成后用这个taskid往Qiniu回调(回调的url包含在第一步的请求里),表示结果

Qiniu -> Sewise

Request:

	POST /api/file/transcode
	{
		"location": "http://xxx", # 需要转码的文件
		
		"callback_url": "htttp://xxx", # 转码完成后的回调地址
		"outputs": [
			{
			"output_key": "...", # 输出结果的key,体现在callback的results上面
			"format": "mp4|m3u8|avi|flv|mp3|...", # 输出格式
			"vcodec": "copy|libx264|...", # 视频编码器
			"acodec": "copy|libacc|...", #音频编码器
	
			"vb": "", # video bitrate
			"r": 25, # 视频帧率
			"ab": "", # audio bitrate
			"ar": "", # audio samplerate
			
			"size": "", #  分辨率, wxh形式, e.g. 400x300
			"ss": 5, # 开始转码的时间,单位:秒
			"t": 7, # 转码的时长,单位:秒   e.g. 假如ss=4,t=50,就是相当于结果只需要原文件的第4秒到第50+4秒这个区间
			"scodec": "mov_text|srt|...", # 字幕,默认需要保留字幕
			"rotate": "auto|90|180|270", # 视频旋转
			
			"an": 1|0, # 1:不保留音频流 0:保留
			"vn": 1|0, # 1:不保留视频流 0:保留
			"stripmeta": 1|0, # 1:去除隐私信息 0:保留
			"speed": 0-32.0, # 0<speed<=32, 倍速转换,当前主要用于加速审查
	
			"segtime": 10, # 切片时间默认10s
			"ts_url_format": "cc$(count).ts", # playlist中每个ts文件的格式,$(count)用对应的序号代替
			"ts_key_format": "key$(count).ts", # 每个ts文件在回调结果中的格式,$(count)用对应的序号代替
			"aes_key": "...", # 如果存在这个字段m3u8需要用aes128加密,加密m3u8时候所用的秘钥
			"aes_url": "...", # PlayList里面到取解密秘钥的url
	
			
			"watermarks": [ # 可能包含一个或多个的图片水印
				{
					"image_url": "..." # 图片水印url
					"gravity": "NorthWest|North|NorthEast|West|Center|EastSouthWest|South|SouthEast", # 水印位置
				},
				...
			],
			
			"drawtexts": [ # 可能包含一个或多个的文字水印
				{
					"text": "..." # 文字水印
					"gravity": "...", # 水印位置
					"font": "...", # 字体
					"size": "...", # 水印大小
					"color": "...", # 水印颜色
				},
				...
			]},
			{...},
			...
		]
		
	}


Response:

200 OK
{
	"taskid": "123456"
}

Sewise -> Qiniu (callback)

结果分成单输出(普通转码)和多输出(hls),都是通过url来指定目标文件,但是多输出需要指定结果的key是怎么样的

Request:

{
	"taskid":"11113242",
	"status_code": 2xx|4xx|5xx, # 结果的状态码,200表示成功
	"error_message": "...", # 假如是非200的结果,需要返回错误信息
	"results": [ # 输出结果列表
		{"url":"http://output.com/taskid/1/1080.mp4", "key": ""},
		{"url":"http://output.com/taskid/1/720.mp4", "key": ""},
	]
}

Response:

200 OK

Qiniu -> Sewise (触发删除)

Request:
	POST /api/file/delete
	{
		"taskid": "..."
	}
	
Response:

200 OK
@zhangqianliang
Copy link

  1. Sewise提供的接口:
    a) hls转码时,对应的format应该是m3u8?如果format不是m3u8,hls参数就会被忽略?
    b) 多码率转码时,多码率是要在vb传值?所以vb是要为一个数组?
    c) "scodec": "mov_text|srt|...", # 字幕,默认需要保留字幕:如果原视频的字幕是dvb,可能就没有办法保留了。
  2. Callback接口:
    "results": [ # 多输出时候(如hls)的结果列表
    {"url":"http://output.com/taskid/1/1080.mp4", "key": ""},
    {"url":"http://output.com/taskid/1/720.mp4", "key": ""},
    ]
    这里对应的多输出应该是m3u8?mp4的话,key的意思是?

@lintianzhi
Copy link
Author

1.a. y
1.b. 你是正确的,这时候vb应该放在m3u8里面,我加了以下4个参数

                "vb": "...", # 视频码率
                "r": 25, # 视频帧率
                "ab": "...", # 音频码率
                "ar": "...", # # audio samplerate

1.c. no problem

2 如果是mp4的话,结果是在另外一个字段result里面,以及m3u8的PlayList输出也应该放在result字段里面,因为没有办法指定key

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment