• 关于 MP多文件上传 的搜索结果

问题

oss MP4视频转码m3u8后无法播放

2019-12-01 19:32:10 167 浏览量 回答数 0

问题

PPVOD云转码视频系统

云转码 2019-12-01 21:22:34 4723 浏览量 回答数 1

问题

直播、点播系统

云转码 2019-12-01 21:24:25 2638 浏览量 回答数 0

新用户福利专场,云服务器ECS低至96.9元/年

新用户福利专场,云服务器ECS低至96.9元/年

问题

云转码系统

云转码 2019-12-01 21:35:00 3686 浏览量 回答数 0

问题

PPVOD云转码视频系统

云转码 2019-12-01 21:21:29 5154 浏览量 回答数 1

问题

云转码视频系统

云转码 2019-12-01 21:33:09 4050 浏览量 回答数 0

问题

oss 转码 播放问题

2019-12-01 19:32:10 116 浏览量 回答数 0

问题

服务器应该把用户上传的视频怎么保存?

蛮大人123 2019-12-01 20:03:11 2022 浏览量 回答数 1

问题

oss 存储视频 问题

爱忆全脑 2019-12-01 19:16:43 81 浏览量 回答数 1

问题

PPVOD云转码系统

云转码 2019-12-01 21:29:57 3830 浏览量 回答数 0

问题

云转码视频系统

云转码 2019-12-01 21:28:59 2932 浏览量 回答数 0

问题

osscmd之如何实现有关Multipart命令?

青衫无名 2019-12-01 21:59:18 1311 浏览量 回答数 0

问题

点播服务是什么?为什么需要点播服务?点播服务由哪些部分组成?

樰篱 2019-12-01 21:24:23 3479 浏览量 回答数 1

回答

解决方案 2.1 后缀名要求 视频点播工作流会对特定的视频或者音频文件后缀自动触发工作流,包括以下后缀名: 视频:3gp, asf, avi, dat, dv, flv, f4v, gif, m2t, m3u8, m4v, mj2, mjpeg, mkv, mov, mp4, mpe, mpg, mpeg, mts, ogg, qt, rm, rmvb, swf, vob, wmv, webm。 音频:aac, ac3, acm, amr, ape, caf, flac, m4a, mp3, ra, wav, wma, aiff。 2.2 路径匹配规则 上述后缀文件所在目录只需要是该目录或者其子目录下的文件均可以匹配生效。例如:工作流配置输入路径test/,则test/下的文件和test/test1/下的文件均可以触发工作流。 2.3 触发方法 OSS有很多的对Object的操作方法,其中有多种修改和上传文件的方法,其中putObject、multipartUpload、postObject、copyObject均是会触发工作流执行实例;但是appendObject、putObjectACL是不会触发工作流执行实例的。 注意事项 ts文件是不会触发转码任务的,只有ts对应的索引m3u8文件才能触发工作流的转码任务。 调用copyobject接口拷贝别的路径下的资源到工作流的输入路径中,对应的工作流转码任务可以正常触发,但是调用copyobject接口,源和目标object名称一致,仅修改输入路径下的资源的head头信息,对应的工作流是不会被触发的. MultipartUpload只有在执行CompleteMultipartUpload的时候才会触发工作流执行实例,之前的InitiateMultipartUpload和UploadPart均不会触发工作流执行。 请不要配置一个工作流的输入路径为另外一个工作流的输入路径的前缀,否则会一个增量文件触发两次工作流执行实例。例如:两个工作流的输入路径分别配置test和test1,则当输入文件上传到test1文件夹下同样满足test前缀,因此会触发两次工作流执行实例。

保持可爱mmm 2020-03-30 11:48:13 0 浏览量 回答数 0

问题

如何实现配置事件通知?

青衫无名 2019-12-01 21:56:19 1276 浏览量 回答数 0

回答

安装SDK 以 1.4.12 版本为例,步骤如下: 1.下载Java示例代码VODUploadDemo-java-1.4.12.zip开发包(包含示例代码和所需jar包), 见 视频上传SDK下载 ; 2.将解压后lib目录下的所有jar文件拷贝至您的项目中; 3.SDK依赖的jar包版本说明 注意:以下列举出部分依赖jar包的版本,您可直接在您的项目中添加maven依赖,也可以将VODUploadDemo-java-1.4.12.zip包中的所有jar包引入您的项目中使用。其中,aliyun-java-vod-upload-1.4.12.jar 还未正式开源,请您直接引入jar包至您的项目中使用。 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.3.3</version> </dependency> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-vod</artifactId> <version>2.15.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.28</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20170516</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency> 4.使用IDE开发时引用jar包的方法,以Eclipse和IntelliJ IDEA为例说明如下: 4.1 在Eclipse中选择您的工程,右击 -> Properties -> Java Build Path -> Add JARs; 4.2 在IntelliJ IDEA中打开您的工程,File -> Project Structure -> Modules -> 右侧Dependencies -> + -> JARs or directories 5.选中您在第一步拷贝的所有jar文件; 经过以上几步,您就可以在Eclipse或IntelliJ IDEA项目中使用VODUpload Java SDK。 3. 示例代码 上传SDK示例 将VODUploadDemo-java-1.4.12.zip开发包解压后, 在sample目录下的UploadVideoDemo.java为文件上传示例程序, 如下: public class UploadVideoDemo { //账号AK信息请填写(必选) private static final String accessKeyId = ""; //账号AK信息请填写(必选) private static final String accessKeySecret = ""; public static void main(String[] args) { //1.音视频上传-本地文件上传 //视频标题(必选) String title = "测试标题"; //本地文件上传和文件流上传时,文件名称为上传文件绝对路径,如:/User/sample/文件名称.mp4 (必选) //文件名必须包含扩展名 String fileName = "测试文件名称.mp4"; //本地文件上传 testUploadVideo(accessKeyId, accessKeySecret, title, fileName); //2.图片上传-本地文件上传 testUploadImageLocalFile(accessKeyId, accessKeySecret); } /** * 本地文件上传接口 * * @param accessKeyId * @param accessKeySecret * @param title * @param fileName */ private static void testUploadVideo(String accessKeyId, String accessKeySecret, String title, String fileName) { UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName); /* 可指定分片上传时每个分片的大小,默认为1M字节 */ request.setPartSize(1 * 1024 * 1024L); /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/ request.setTaskNum(1); /* 是否开启断点续传, 默认断点续传功能关闭。当网络不稳定或者程序崩溃时,再次发起相同上传请求,可以继续未完成的上传任务,适用于超时3000秒仍不能上传完成的大文件。 注意: 断点续传开启后,会在上传过程中将上传位置写入本地磁盘文件,影响文件上传速度,请您根据实际情况选择是否开启*/ request.setEnableCheckpoint(false); /* OSS慢请求日志打印超时时间,是指每个分片上传时间超过该阈值时会打印debug日志,如果想屏蔽此日志,请调整该阈值。单位: 毫秒,默认为300000毫秒*/ //request.setSlowRequestsThreshold(300000L); /* 可指定每个分片慢请求时打印日志的时间阈值,默认为300s*/ //request.setSlowRequestsThreshold(300000L); /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/ //request.setIsShowWaterMark(true); /* 自定义消息回调设置(可选),参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */ // request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}"); /* 视频分类ID(可选) */ //request.setCateId(0); /* 视频标签,多个用逗号分隔(可选) */ //request.setTags("标签1,标签2"); /* 视频描述(可选) */ //request.setDescription("视频描述"); /* 封面图片(可选) */ //request.setCoverURL("http://cover.sample.com/sample.jpg"); /* 模板组ID(可选) */ //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); /* 存储区域(可选) */ //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); /* 开启默认上传进度回调 */ // request.setPrintProgress(true); /* 设置自定义上传进度回调 (必须继承 ProgressListener) */ // request.setProgressListener(new PutObjectProgressListener()); UploadVideoImpl uploader = new UploadVideoImpl(); UploadVideoResponse response = uploader.uploadVideo(request); System.out.print("RequestId=" + response.getRequestId() + "\n"); //请求视频点播服务的请求ID if (response.isSuccess()) { System.out.print("VideoId=" + response.getVideoId() + "\n"); } else { /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */ System.out.print("VideoId=" + response.getVideoId() + "\n"); System.out.print("ErrorCode=" + response.getCode() + "\n"); System.out.print("ErrorMessage=" + response.getMessage() + "\n"); } } /** * 图片上传接口,本地文件上传示例 * 参数参考文档 https://help.aliyun.com/document_detail/55619.html * * @param accessKeyId * @param accessKeySecret */ private static void testUploadImageLocalFile(String accessKeyId, String accessKeySecret) { // 图片类型(必选)取值范围:default(默认),cover(封面),watermark(水印) String imageType = "cover"; UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType); /* 图片文件扩展名(可选)取值范围:png,jpg,jpeg */ //request.setImageExt("png"); /* 图片标题(可选)长度不超过128个字节,UTF8编码 */ //request.setTitle("图片标题"); /* 图片标签(可选)单个标签不超过32字节,最多不超过16个标签,多个用逗号分隔,UTF8编码 */ //request.setTags("标签1,标签2"); /* 存储区域(可选)*/ //request.setStorageLocation("out-4f3952f78c0211e8b3020013e7.oss-cn-shanghai.aliyuncs.com"); /* 流式上传时,InputStream为必选,fileName为源文件名称,如:文件名称.png(可选)*/ //request.setFileName("测试文件名称.png"); /* 开启默认上传进度回调 */ // request.setPrintProgress(true); /* 设置自定义上传进度回调 (必须继承 ProgressListener) */ // request.setProgressListener(new PutObjectProgressListener()); UploadImageImpl uploadImage = new UploadImageImpl(); UploadImageResponse response = uploadImage.upload(request); System.out.print("RequestId=" + response.getRequestId() + "\n"); if (response.isSuccess()) { System.out.print("ImageId=" + response.getImageId() + "\n"); System.out.print("ImageURL=" + response.getImageURL() + "\n"); } else { System.out.print("ErrorCode=" + response.getCode() + "\n"); System.out.print("ErrorMessage=" + response.getMessage() + "\n"); } } } 上传进度条示例 将VODUploadDemo-java-1.4.12.zip开发包解压后, 在sample目录下的PutObjectProgressListener.java为上传进度回调函数示例程序,该类必须继承VoDProgressListener类。其中,ProgressEvent是通过OSS上传文件时产生的进度回调通知,您可自定义各个事件通知的业务处理逻辑,示例代码如下: import com.aliyun.oss.event.ProgressEvent; import com.aliyun.oss.event.ProgressEventType; /** * 上传进度回调方法类 * 当您开启上传进度回调时该事件回调才会生效。 * OSS分片上传成功或失败均触发相应的回调事件,您可根据业务逻辑处理相应的事件回调。 * 当创建音视频信息成功后,此上传进度回调中的videoId为本次上传生成的视频ID,您可以根据视频ID进行音视频管理。 * 当创建图片信息成功后,此上传进度回调中的ImageId为本次上传生成的图片ID,您可以根据视频ID进行图片管理。 */ public class PutObjectProgressListener implements VoDProgressListener { /** * 已成功上传至OSS的字节数 */ private long bytesWritten = 0; /** * 原始文件的总字节数 */ private long totalBytes = -1; /** * 本次上传成功标记 */ private boolean succeed = false; /** * 视频ID */ private String videoId; /** * 图片ID */ private String imageId; public void progressChanged(ProgressEvent progressEvent) { long bytes = progressEvent.getBytes(); ProgressEventType eventType = progressEvent.getEventType(); switch (eventType) { // 开始上传事件 case TRANSFER_STARTED_EVENT: if (videoId != null) { System.out.println("Start to upload videoId " + videoId + "......"); } if (imageId != null) { System.out.println("Start to upload imageId " + imageId + "......"); } break; // 计算待上传文件总大小事件通知,只有调用本地文件方式上传时支持该事件 case REQUEST_CONTENT_LENGTH_EVENT: this.totalBytes = bytes; System.out.println(this.totalBytes + "bytes in total will be uploaded to OSS."); break; // 已经上传成功文件大小事件通知 case REQUEST_BYTE_TRANSFER_EVENT: this.bytesWritten += bytes; if (this.totalBytes != -1) { int percent = (int) (this.bytesWritten * 100.0 / this.totalBytes); System.out.println(bytes + " bytes have been written at this time, upload progress: " + percent + "%(" + this.bytesWritten + "/" + this.totalBytes + ")"); } else { System.out.println(bytes + " bytes have been written at this time, upload sub total : " + "(" + this.bytesWritten + ")"); } break; // 文件全部上传成功事件通知 case TRANSFER_COMPLETED_EVENT: this.succeed = true; if (videoId != null) { System.out.println("Succeed to upload videoId " + videoId + " , " + this.bytesWritten + " bytes have been transferred in total."); } if (imageId != null) { System.out.println("Succeed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred in total."); } break; // 文件上传失败事件通知 case TRANSFER_FAILED_EVENT: if (videoId != null) { System.out.println("Failed to upload videoId " + videoId + " , " + this.bytesWritten + " bytes have been transferred."); } if (imageId != null) { System.out.println("Failed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred."); } break; default: break; } } public boolean isSucceed() { return succeed; } public void onVidReady(String videoId) { setVideoId(videoId); } public void onImageIdReady(String imageId) { setImageId(imageId); } public String getVideoId() { return videoId; } public void setVideoId(String videoId) { this.videoId = videoId; } public String getImageId() { return imageId; } public void setImageId(String imageId) { this.imageId = imageId; } }

保持可爱mmm 2020-03-30 13:42:41 0 浏览量 回答数 0

问题

用DzzOffice管理阿里云OSS

fhxsnabi 2019-12-01 22:03:30 15353 浏览量 回答数 3

问题

百度ueditor插件上传图片报服务器返回出错? 400 报错

爱吃鱼的程序员 2020-05-30 21:38:47 0 浏览量 回答数 1

回答

配置域名 在测试环境小程序云会自动分配一个二级域名供小程序应用测试使用。当您将小程序部署到生产环境时,您需要手动配置小程序应用使用的域名。 前提条件 如果您没有可使用的域名,请先购买域名并完成实名认证。详细信息,请参见注册域名。 注意 小程序测试环境免费提供的域名只能用于本地调试,不能配置到支付宝小程序的服务器域名白名单中。 小程序云应用是为小程序提供后台接口,不鼓励用来搭建网站。因此在使用小程序测试环境免费提供的域名(如app2143434635test.mapp-test.xyz)访问云应用时,会自动加上Content-Disposition attachment响应头,从而在浏览器中会触发下载动作而不是打开一个页面(该限制不影响小程序正常的API调用)。 操作步骤 [登录DNS云解析控制台。](链接地址https://dns.console.aliyun.com/?spm=a2c4g.11186623.2.14.3cbc2ea4ROwQdY) 在域名解析页面,单击添加域名。 单击目标域名操作列下的解析设置。 单击添加记录,完成以下操作配置域名解析记录。 详细配置说明,请参见[添加解析记录](链接地址https://help.aliyun.com/knowledge_detail/29725.html?spm=a2c4g.11186623.2.15.3cbc2ea4ROwQdY)。 记录类型:选择A-将域名指向一个IPV4地址。 主机记录:输入www。 解析线路:选择默认线路。 记录值:输入云应用的公网IP。 您可以在小程序云应用应用详情页面的域名页签下查看公网IP。 TTL:选择10分钟。 配置SSL证书(入门版) 前提条件 您已创建入门版云环境。详情请参见构建环境。 已经购买了证书。 您可以通过阿里云SSL证书服务购买、申请SSL证书。详细信息,请参见申请证书。 操作步骤 在云应用详情页面,单击域名页签。 单击上传SSL证书,然后选择SSL证书文件。 说明 SSL证书格式必须为.pem或.crt。 单击上传SSL证书私钥文件,然后选择SSL证书的私钥文件。 单击确定完成证书配置。 配置SSL证书(标准版) 在小程序应用发布前,您需要上传小程序应用所使用的服务器证书和密钥。标准版环境的SSL证书在负载均衡实例上配置。您可以直接使用SSL证书服务中的证书或者将所需的第三方签发的服务器证书和密钥上传到负载均衡。 前提条件 您已创建标准版云环境。详情请参见[构建环境](链接地址https://help.aliyun.com/document_detail/122087.html?spm=a2c4g.11186623.2.13.1dc1563aITKgUD#task-645658)。 已经购买了证书。 您可以通过[阿里云SSL证书服务购买](链接地址https://www.aliyun.com/product/cas?spm=a2c4g.11186623.2.14.1dc1563aITKgUD)、申请SSL证书。详细信息,请参见[申请证书](链接地址https://help.aliyun.com/document_detail/98574.html?spm=a2c4g.11186623.2.15.1dc1563aITKgUD)。 操作步骤 在云应用详情页面,单击域名页签。 如果您要使用阿里云SSL证书服务的证书,完成以下操作: 单击购买,然后根据指引完成购买。 详细配置说明,请参见[选择并购买证书](链接地址https://help.aliyun.com/document_detail/98572.html?spm=a2c4g.11186623.2.16.1dc1563aITKgUD)。 填写资料完成证书申请。 详细配置说明,请参见[申请证书](链接地址https://help.aliyun.com/document_detail/98574.html?spm=a2c4g.11186623.2.17.1dc1563aITKgUD)。 证书签发后,将证书部署到负载均衡服务。 详细配置说明,请参见[部署证书](链接地址https://help.aliyun.com/document_detail/98575.html?spm=a2c4g.11186623.2.18.1dc1563aITKgUD)。 如果您想使用本地的证书,完成以下操作: 单击上传SSL证书及私钥。 单击上传SSL证书,然后选择SSL证书文件。 说明 SSL证书格式必须为.pem或.crt。 单击上传SSL证书私钥文件,然后选择SSL证书的私钥文件。 单击确定完成证书配置。 上传发布包 在构建云环境后,您可以上传发布包。 背景信息 当前小程序云应用支持部署Spring Boot和Node.js框架的应用。详细信息,请参见后端框架。 操作步骤 在应用详情页面,单击上传发布包。 在上传发布包页面,完成以下操作: 可选: 修改发布版本。默认发布版本是上传发布包的时间。 单击上传文件,然后选择要上传的发布包。 注意 确保上传的发布包的后端框架和创建云应用时选择的框架一致。更多详细信息,请参见[后端框架](链接地址https://help.aliyun.com/document_detail/122081.html?spm=a2c4g.11186623.2.16.3733b387tCRxoY#concept-jmk-3q3-fhb)。 可选: 输入备注信息。 单击上传。 执行结果 上传成功后,在应用详情页面,单击发布信息查看上传的发布包。 部署云应用 您可以在小程序云应用控制台一键部署小程序云应用,无需手动搭建后端环境。 前提条件 创建云应用 构建环境 配置域名和配置SSL证书(入门版) 说明 测试环境部署小程序应用时无需配置域名和证书。 上传发布包 操作步骤 在应用详情页面,单击发布部署。 选择要发布的版本,然后单击发布。 发布成功后,单击发布信息页签,查看发布信息。 查看日志 你可以在云应用部署的云服务器上查看云应用的日志。 操作步骤 登录[小程序云应用控制台](链接地址https://mp.console.aliyun.com/cloudAppList?spm=a2c4g.11186623.2.8.36491610lhzwUN)。 单击云应用项目,然后单击云服务器页签查看云应用部署的ECS实例信息。 登录ECS实例,进入/home/admin/logs/目录查看日志: stdout.log和stderr.log文件存储的是应用本身相关的日志信息。 xdeploy目录下存储的是应用部署相关的日志信息。

南霸天霸南北 2020-02-17 18:12:05 0 浏览量 回答数 0

问题

【参考架构】视频点播

穹桑 2019-12-01 21:24:40 9768 浏览量 回答数 1

问题

OSS学院:为什么我的图片会被下载?怎么在线播放影音?

leehon 2019-12-01 21:28:58 28524 浏览量 回答数 15

问题

轻松定制跨终端的视频点播服务-新年活动:回复评论送实验体验券!

仟与仟寻 2019-12-01 21:54:08 2787 浏览量 回答数 1

回答

前言 随着计算机技术和 Internet 的日新月异,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育、娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建视频点播类应用,告别刀耕火种, 直接上云会扫清硬件采购、 技术等各种障碍,以阿里云为例: image 这是一个非常典型的解决方案, 对象存储 OSS 可以支持海量视频存储,采集上传的视频被转码以适配各种终端,CDN 加速终端设备播放视频的速度。此外还有一些内容安全审查需求, 比如鉴黄、鉴恐等。 而在视频点播解决方案中, 视频转码是最消耗计算力的一个子系统,虽然您可以使用云上专门的转码服务,但在很多情况下,您会选择自己搭建转码服务。比如: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套视频处理服务,能否在此基础上让它更弹性,更高的可用性? 您有并发处理大量视频的需求。 您有很多超大的视频需要批量快速处理完, 比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完。 您有更高级的自定义处理需求,比如视频转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力。 自定义视频处理流程中可能会有多种操作组合, 比如转码、加水印和生成视频首页 GIF。后续为视频处理系统增加新需求,比如调整转码参数,希望新功能发布上线对在线服务无影响。 您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上视频前几帧的 GIF、获取视频或者音频的时长,自己搭建成本更低。 各种格式的音频转换或者各种采样率自定义、音频降噪等功能 您的视频源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将它们再迁移到 OSS 上。 如果您的视频处理系统有上述需求,或者您期望实现一个 弹性、高可用、低成本、免运维、灵活支持任意处理逻辑 的视频处理系统,那么本文则是您期待的最佳实践方案。 Serverless 自定义音视频处理 在介绍具体方案之前, 先介绍两款产品: 函数计算 :阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。 函数工作流:函数工作流(Function Flow,以下简称 FnF)是一个用来协调多个分布式任务执行的全托管云服务。您可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。 免费开通函数计算,按量付费,函数计算有很大的免费额度。 免费开通函数工作流,按量付费,函数工作流有很大的免费额度。 函数计算可靠的执行任意逻辑, 逻辑可以是利用 FFmpeg 对视频任何处理操作, 也可以更新视频 meta 数据到数据库等。函数工作流对相应的函数进行编排, 比如第一步的函数是转码, 第二步的函数是转码成功后,将相应 meta 数据库写入数据库等。 至此,您应该初步理解了函数计算的自定义处理能力 + 函数工作流编排能力几乎满足您任何自定义处理的需求,接下来,本文以一个具体的示例展示基于函数计算和函数工作流打造的一个弹性高可用的 Serverless 视频处理系统,并与传统方案进行性能、成本和工程效率的对比。 Simple 视频处理系统 假设您是对视频进行单纯的处理, 架构方案图如下: image 如上图所示, 用户上传一个视频到 OSS, OSS 触发器自动触发函数执行, 函数调用 FFmpeg 进行视频转码, 并且将转码后的视频保存回 OSS。 OSS 事件触发器, 阿里云对象存储和函数计算无缝集成。您可以为各种类型的事件设置处理函数,当 OSS 系统捕获到指定类型的事件后,会自动调用函数处理。例如,您可以设置函数来处理 PutObject 事件,当您调用 OSS PutObject API 上传视频到 OSS 后,相关联的函数会自动触发来处理该视频。 Simple 视频处理系统示例工程地址 强大的监控系统: 您可以直接基于示例工程部署您的 Simple 音视频处理系统服务, 但是当您想要处理超大视频(比如 test_huge.mov ) 或者对小视频进行多种组合操作的时候, 您会发现函数会执行失败,原因是函数计算的执行环境有最大执行时间为 10 分钟的限制,如果最大的 10 分钟不能满足您的需求, 您可以选择: 对视频进行分片 -> 转码 -> 合成处理, 详情参考:fc-fnf-video-processing, 下文会详细介绍; 联系函数计算团队(钉钉群号: 11721331) 或者提工单: 适当放宽执行时长限制; 申请使用更高的函数内存 12G(8vCPU) 为了突破函数计算执行环境的限制(或者说加快大视频的转码速度), 进行各种复杂的组合操作, 此时引入函数工作流 FnF 去编排函数实现一个功能强大的视频处理工作流系统是一个很好的方案。 视频处理工作流系统 image 如上图所示, 假设用户上传一个 mov 格式的视频到 OSS,OSS 触发器自动触发函数执行, 函数调用 FnF,会同时进行 1 种或者多种格式的转码(由您触发的函数环境变量DST_FORMATS 参数控制)。 所以您可以实现如下需求: 一个视频文件可以同时被转码成各种格式以及其他各种自定义处理,比如增加水印处理或者在 after-process 更新信息到数据库等。 当有多个文件同时上传到 OSS,函数计算会自动伸缩, 并行处理多个文件, 同时每次文件转码成多种格式也是并行。 结合 NAS + 视频切片, 可以解决超大视频(大于 3G )的转码, 对于每一个视频,先进行切片处理,然后并行转码切片,最后合成,通过设置合理的切片时间,可以大大加速较大视频的转码速度。 所谓的视频切片,是将视频流按指定的时间间隔,切分成一系列分片文件,并生成一个索引文件记录分片文件的信息 视频处理工作流系统示例工程地址 示例效果: gif 函数计算 + 函数工作流 Serverless 方案 VS 传统方案 卓越的工程效率 自建服务 函数计算 + 函数工作流 Serverless 基础设施 需要用户采购和管理 无 开发效率 除了必要的业务逻辑开发,需要自己建立相同线上运行环境, 包括相关软件的安装、服务配置、安全更新等一系列问题 只需要专注业务逻辑的开发, 配合 FUN 工具一键资源编排和部署 并行&分布式视频处理 需要很强的开发能力和完善的监控系统来保证稳定性 通过 FnF 资源编排即可实现多个视频的并行处理以及单个大视频的分布式处理,稳定性和监控交由云平台 学习上手成本 除了编程语言开发能力和熟悉 FFmpeg 以外,可能使用 K8S 或弹性伸缩( ESS ),需要了解更多的产品、名词和参数的意义 会编写对应的语言的函数代码和熟悉 FFmpeg 使用即可 项目上线周期 在具体业务逻辑外耗费大量的时间和人力成本,保守估计大约 30 人天,包括硬件采购、软件和环境配置、系统开发、测试、监控报警、灰度发布系统等 预计 3 人天, 开发调试(2人天)+ 压测观察(1 人天) 弹性伸缩免运维,性能优异 自建服务 函数计算 + 函数工作流 Serverless 弹性高可用 需要自建负载均衡 (SLB),弹性伸缩,扩容缩容速度较 FC 慢 FC系统固有毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,免运维,视频处理工作流系统 (FnF + FC) 压测;性能优异, 详情见下面的转码性能表 监控报警查询 ECS 或者容器级别的 metrics 提供更细粒度的 FnF 流程执行以及函数执行情况, 同时可以查询每次函数执行的 latency 和日志等, 更加完善的报警监控机制 函数计算 + 函数工作流 Serverless 方案转码性能表 实验视频为是 89s 的 mov 文件 4K 视频: 4K.mov,云服务进行 mov -> mp4 普通转码需要消耗的时间为 188s, 将这个参考时间记为 T 视频切片时间 FC转码耗时 性能加速百分比 45s 160s 117.5% 25s 100s 188% 15s 70s 268.6% 10s 45s 417.8% 5s 35s 537.1% 性能加速百分比 = T / FC转码耗时 从上表可以看出,设置的视频切片时间越短, 视频转码时间越短, 函数计算可以自动瞬时调度出更多的计算资源来一起完成这个视频的转码, 转码性能优异。 更低的成本 具有明显波峰波谷的视频处理场景(比如只有部分时间段有视频处理请求,其他时间很少甚至没有视频处理请求),选择按需付费,只需为实际使用的计算资源付费。 没有明显波峰波谷的视频处理场景,可以使用预付费(包年包月),成本仍然具有竞争力。 函数计算成本优化最佳实践文档。 假设有一个基于 ECS 搭建的视频转码服务,由于是 CPU 密集型计算, 因此在这里将平均 CPU 利用率作为核心参考指标对评估成本,以一个月为周期,10 台 C5 ECS 的总计算力为例, 总的计算量约为 30% 场景下, 两个解决方案 CPU 资源利用率使用情况示意图大致如下: image 由上图预估出如下计费模型: 函数计算预付费 3CU 一个月: 246.27 元, 计算能力等价于 ECS 计算型 C5 ECS 计算型 C5 (2vCPU,4GB)+云盘: 包月219 元 函数计算按量付费占整个计算量的占比 <= 10%,费用约为 3×864×10% = 259.2 元,(3G 规格的函数满负载跑满一个月费用为:0.00011108×3×30×24×3600 = 863.8,详情查看计费) ITEM 平均CPU利用率 计算费用 总计 函数计算组合付费 >=80% 998(246.27×3+259.2) <= 998 按峰值预留ECS <=30% 2190(10*219) >=2190 在这个模型预估里面,可以看出 FC 方案具有很强的成本竞争力,在实际场景中, 基于 ECS 自建的视频转码服务 CPU 利用甚至很难达到 20%, 理由如下: 可能只有部分时间段有视频转码请求 为了用户体验,视频转码速度有一定的要求,可能一个视频转码就需要 10 台 ECS 并行处理来转码, 因此只能预备很多 ECS 因此,在实际场景中, FC 在视频处理上的成本竞争力远强于上述模型。 即使和云厂商视频转码服务单价 PK, 该方案仍有很强的成本竞争力 我们这边选用点播视频中最常用的两个格式(mp4、flv)之间进行相互转换,经实验验证, 函数内存设置为3G,基于该方案从 mp4 转码为 flv 的费用概览表: 实验视频为是 89s 的 mp4 和 flv 格式的文件视频, 测试视频地址: 480P.mp4 720P.mp4 1080P.mp4 4K.mp4 480P.flv 720P.flv 1080P.flv 4K.flv 测试命令: ffmpeg -i test.flv test.mp4 和 ffmpeg -i test.flv test.mp4 mp4 转 flv: 分辨率 bitrate 帧率 FC 转码耗费时间 FC 转码费用 某云视频处理费用 成本下降百分比 标清 640480 889 kb/s 24 11.2s 0.003732288 0.032 88.3% 高清 1280720 1963 kb/s 24 20.5s 0.00683142 0.065 89.5% 超清 19201080 3689 kb/s 24 40s 0.0133296 0.126 89.4% 4K 38402160 11185 kb/s 24 142s 0.04732008 0.556 91.5% flv 转 mp4: 分辨率 bitrate 帧率 FC 转码耗费时间 FC 转码费用 某云视频处理费用 成本下降百分比 标清 640480 712 kb/s 24 34.5s 0.01149678 0.032 64.1% 高清 1280720 1806 kb/s 24 100.3s 0.033424 0.065 48.6% 超清 19201080 3911 kb/s 24 226.4s 0.0754455 0.126 40.1% 4K 38402160 15109 kb/s 24 912s 0.30391488 0.556 45.3% 成本下降百分比 = (某云视频处理费用 - FC 转码费用)/ 云视频处理费用 某云视频处理,计费使用普通转码,转码时长不足一分钟,按照一分钟计算,这里计费采用的是 2 min,即使采用 1.5 min 计算, 成本下降百分比基本在10%以内浮动 从上表可以看出, 基于函数计算 + 函数工作流的方案在计算资源成本上对于计算复杂度较高的 flv 转 mp4 还是计算复杂度较低的 mp4 转 flv, 都具有很强的成本竞争力。 根据实际经验, 往往成本下降比上表列出来的更加明显, 理由如下: 测试视频的码率较高, 实际上很多场景绝大部分都是标清或者流畅视频的转码场景, 码率也比测试视频低,这个时候计算量变小, FC 执行时间短, 费用会降低, 但是通用的云转码服务计费是不变的. 很多视频分辨率在通用的云转码服务是计费是有很大损失的, 比如转码的视频是 856480 或者 1368768, 都会进入云转码服务的下一档计费单价, 比如856480 进入 1280720 高清转码计费档,1368768 进入 19201080 超清转码计费档, 单价基本是跨越式上升, 但是实际真正的计算量增加可能还不到30%, 而函数计算则是真正能做到按计算量付费. 操作部署 免费开通函数计算,按量付费,函数计算有很大的免费额度。 免费开通函数工作流,按量付费,函数工作流有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 详情见各自示例工程的 README Simple 视频处理系统示例工程地址 视频处理工作流系统示例工程地址 总结 基于函数计算 FC 和函数工作流 FnF 的弹性高可用视频处理系统天然继承了这两个产品的优点: 无需采购和管理服务器等基础设施,只需专注视频处理业务逻辑的开发,大幅缩短项目交付时间和人力成本 提供日志查询、性能监控、报警等功能快速排查故障 以事件驱动的方式触发响应用户请求 免运维,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,性能优异 成本极具竞争力 相比于通用的转码处理服务: 超强自定义,对用户透明, 基于 FFmpeg 或者其他音视频处理工具命令快速开发相应的音视频处理逻辑 原有基于 FFmpeg 自建的音视频处理服务可以一键迁移 弹性更强, 可以保证有充足的计算资源为转码服务,比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完 各种格式的音频转换或者各种采样率自定义、音频降噪等功能, 比如专业音频处理工具 aacgain 和 mp3gain 可以和 serverless 工作流完成更加复杂、自定义的任务编排,比如视频转码完成后,记录转码详情到数据库,同时自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力 更多的方式的事件驱动, 比如可以选择 OSS 自动触发(丰富的触发规则), 也可以根据业务选择 MNS 消息(支持 tag 过滤)触发 在大部分场景下具有很强的成本竞争力相比于其他自建服务: 毫秒级弹性伸缩,弹性能力超强,支持大规模资源调用,可弹性支持几万核.小时的计算力,比如 1 万节课半个小时完成转码 只需要专注业务逻辑代码即可,原生自带事件驱动模式,简化开发编程模型,同时可以达到消息(即音视频任务)处理的优先级,可大大提高开发运维效率 函数计算采用 3AZ 部署, 安全性高,计算资源也是多 AZ 获取, 能保证每个用户需要的算力峰值 开箱即用的监控系统, 如上面 gif 动图所示,可以多维度监控函数的执行情况,根据监控快速定位问题,同时给用户提供分析能力, 比如视频的格式分布, size 分布等 在大部分场景下具有很强的成本竞争力, 因为在函数计算是真正的按量付费(计费粒度在百毫秒), 可以理解为 CPU 的利用率为 100% 最后一一回答一下之前列出的问题: Q1: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套视频处理服务,能否在此基础上让它更弹性,更高的可用性? A: 如工程示例所示,在虚拟机/容器平台上基于 FFmpeg 的服务可以轻松切换到函数计算, FFmpeg 相关命令可以直接移值到函数计算,改造成本较低, 同时天然继承了函数计算弹性高可用性特性。 Q2:您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上视频前几帧的 GIF 等。 自己搭建成本更低。 A: 函数计算天生就是解决这些自定义问题, 你的代码你做主, 代码中快速执行几个 FFmpeg 的命令即可完成需求。典型示例: fc-oss-ffmpeg Q3: 您有更高级的自定义处理需求,比如视频转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案),after-process 中可以做一些自定义的操作, 您还可以基于此流程再做一些额外处理等, 比如: 再增加后续流程 最开始增加 pre-process Q4: 您有并发同时处理大量视频的需求。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案), 当有多个文件同时上传到 OSS, 函数计算会自动伸缩, 并行处理多个文件。详情可以参考 视频处理工作流系统 (FnF + FC) 压测 Q5:您有很多超大的视频需要批量快速处理完, 比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完。A: 详情可以参考视频处理工作流系统 (FnF + FC) 压测, 可以通过控制分片的大小, 可以使得每个大视频都有足够多的计算资源参与转码计算, 大大提高转码速度。 Q6: 自定义视频处理流程中可能会有多种操作组合, 比如转码、加水印和生成视频首页 GIF,后续为视频处理系统增加新需求,比如调整转码参数,希望新功能发布上线对在线服务无影响。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案), FnF 只负责编排调用函数, 因此只需要更新相应的处理函数即可,同时函数有 version 和 alias 功能, 更好地控制灰度上线, 函数计算版本管理 Q7: 您的视频源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将他们再迁移到 OSS 上。 A: 函数计算可以挂载 NAS, 直接对 NAS 中的文件进行处理

1934890530796658 2020-03-27 18:21:36 0 浏览量 回答数 0

回答

这是一个非常典型的解决方案, 对象存储 OSS 可以支持海量视频存储,采集上传的视频被转码以适配各种终端,CDN 加速终端设备播放视频的速度。此外还有一些内容安全审查需求, 比如鉴黄、鉴恐等。 而在视频点播解决方案中, 视频转码是最消耗计算力的一个子系统,虽然您可以使用云上专门的转码服务,但在很多情况下,您会选择自己搭建转码服务。比如: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套视频处理服务,能否在此基础上让它更弹性,更高的可用性? 您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上视频前几帧的 GIF、获取视频或者音频的时长,自己搭建成本更低。 各种格式的音频转换或者各种采样率自定义、音频降噪等功能 您有更高级的自定义处理需求,比如视频转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力。 您有并发处理大量视频的需求。 自定义视频处理流程中可能会有多种操作组合, 比如转码、加水印和生成视频首页 GIF。后续为视频处理系统增加新需求,比如调整转码参数,希望新功能发布上线对在线服务无影响。 您的视频源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将它们再迁移到 OSS 上。 如果您的视频处理系统有上述需求,或者您期望实现一个 弹性、高可用、低成本、免运维、灵活支持任意处理逻辑 的视频处理系统,那么本文则是您期待的最佳实践方案。 Serverless 自定义视频处理 在介绍具体方案之前, 先介绍两款产品: 函数计算 :阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。 函数工作流:函数工作流(Function Flow,以下简称 FnF)是一个用来协调多个分布式任务执行的全托管云服务。您可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。 免费开通函数计算,按量付费,函数计算有很大的免费额度。 免费开通函数工作流,按量付费,函数工作流有很大的免费额度。 函数计算可靠的执行任意逻辑, 逻辑可以是利用 FFmpeg 对视频任何处理操作, 也可以更新视频 meta 数据到数据库等。 函数工作流对相应的函数进行编排, 比如第一步的函数是转码, 第二步的函数是转码成功后,将相应 meta 数据库写入数据库等。 至此,您应该初步理解了函数计算的自定义处理能力 + 函数工作流编排能力几乎满足您任何自定义处理的需求,接下来,本文以一个具体的示例展示基于函数计算和函数工作流打造的一个弹性高可用的 Serverless 视频处理系统,并与传统方案进行性能、成本和工程效率的对比。 简单视频处理系统 假设您是对短视频进行简单的处理, 架构方案图如下: 如上图所示, 用户上传一个视频到 OSS, OSS 触发器自动触发函数执行, 函数调用 FFmpeg 进行视频转码, 并且将转码后的视频保存回 OSS。 OSS 事件触发器, 阿里云对象存储和函数计算无缝集成。您可以为各种类型的事件设置处理函数,当 OSS 系统捕获到指定类型的事件后,会自动调用函数处理。例如,您可以设置函数来处理 PutObject 事件,当您调用 OSS PutObject API 上传视频到 OSS 后,相关联的函数会自动触发来处理该视频。 简单视频处理系统示例工程地址 您可以直接基于示例工程部署您的简单视频处理系统服务, 但是当您想要处理大视频(比如 test_huge.mov ) 或者对小视频进行多种组合操作的时候, 您会发现函数很大概率会执行失败,原因是函数计算的执行环境存在一些限制, 比如最大执行时间为 10 分钟, 最大内存为 3G。 为了突破函数计算执行环境的限制,引入函数工作流 FnF 去编排函数实现一个功能强大的全功能视频处理系统。 全功能视频处理系统 如上图所示, 假设用户上传一个 mov 格式的视频到 OSS,OSS 触发器自动触发函数执行, 函数调用 FnF,并行进行提取音频文件,同时进行 avi,mp4,flv 格式的转码。 所以您可以实现如下需求: 一个视频文件可以同时被转码成各种格式以及其他各种自定义处理,比如增加水印处理或者在 after-process 更新信息到数据库等。 当有多个文件同时上传到 OSS,函数计算会自动伸缩, 并行处理多个文件。 对于每一个视频,先进行切片处理,然后并行转码切片,最后合成,通过设置合理的切片时间,可以大大加速较大视频的转码速度。 所谓的视频切片,是将视频流按指定的时间间隔,切分成一系列分片文件,并生成一个索引文件记录分片文件的信息 结合 NAS + 视频切片, 可以解决超大视频(大于 3G )的转码。 全功能视频处理系统示例工程地址

保持可爱mmm 2020-04-15 23:08:12 0 浏览量 回答数 0

回答

回 1楼(shotedit) 的帖子 你说的200准确应该是http status,对于curl的错误返回时有可能是一个负数,这在aos_define.h中是可以看到的,比如-992,AOSE_CONNECTION_FAILED = -992,表示建立http连接失败。对于error_code一般是给出一个错误类型,至于具体的错误信息则是在error msg里面给出的。举个例子,由于权限问题,请求可能返回403,error_code提示AccessDenied,error_msg中会进一步说明AccessDenied的原因,有可能是access key和access id不对,也有可能是系统不对等 ------------------------- 回 楼主(shotedit) 的帖子 文档中指出的那个错误我们会及时修改掉,我们同学在输入的时候可能遗漏了,不好意思给您造成困惑 ------------------------- 回 楼主(shotedit) 的帖子 另外,常用的error_code含义在文档的最后有说明, https://docs.aliyun.com/?spm=5176.383663.9.10.baDLsC#/pub/oss/sdk/c-sdk&exception, 具体错误信息还是要看error_msg的 ------------------------- 回 5楼(shotedit) 的帖子 这个情况是否可以重现,如果可以的话,打出req_id,请开发同学帮忙看一下 ------------------------- 回 9楼(shotedit) 的帖子 你的场景下首先可以获得bucket中所有没有complete的upload_id以及相应的object,这个接口是oss_list_multipart_upload,当然会有一种情况,你有可能一个object下面会启动多次upload,也就是会有多个upload_id,这个情况是得你自己判断到底是哪一个upload_id,一个好的办法是同一个object只有一个人使用MPU上传,这样也可以避免并发覆盖问题。 ------------------------- 按照上面的方法确定续传的upload_id和object以后,就可以指定文件进行继续上传了。对了,您使用MPU时每个part是并发上传的,还是单线程? ------------------------- 回 7楼(shotedit) 的帖子 删除multipart c sdk中是有接口的,oss_abort_multipart_upload这个接口可以删除指定object的upload_id下面的碎片 ------------------------- 回 15楼(shotedit) 的帖子 MPU时除了最后一个分片,其他分片必须大于100KB ------------------------- 回 13楼(shotedit) 的帖子 恩,这个要看使用场景,我理解如果是客户端,一般使用c sdk的场景很多是嵌入式,这时使用多线程实际上没有太大意义,毕竟网络就那样,如果是服务器端的话就可以玩一些花样。我们有一些想法,想提供一些易用的接口,比如帮用户把MP上传文件封装掉,用户只需要指定上传文件名和每个分片的大小等信息,sdk自动处理MP的一些细节,这样更方便用户。 ------------------------- 回 14楼(shotedit) 的帖子 这个我们也在考虑改进,控制台那边也有用户提供类似需求,控制台的同学已经考虑这件事情了 ------------------------- 回 15楼(shotedit) 的帖子 分片太小在complete的时候会报400,你说的302应该不是一回事 ------------------------- 可以参考一下oss api文档: https://docs.aliyun.com/?spm=5176.383663.9.3.KEN7Ty#/pub/oss/api-reference/multipart-upload&AbortMultipartUpload , abort时候是返回204的 ------------------------- 回 24楼(shotedit) 的帖子 不会,只要你的是utf8编码,你开一下open file的具体原因,默认是输出到屏幕的,你可以考虑重定向日志 ------------------------- 回 27楼(shotedit) 的帖子 看一下您使用的编码方式,windows上有可能使用的是GBK2312编码方式,如果是GBK2312的话需要您自己进行utf8编码

yjseu 2019-12-01 23:49:01 0 浏览量 回答数 0

回答

ReCSDK的文档里面给的错误响应怎么跟代码对应? 找到了,竟然在error_code 而不是error_msg..... ------------------------- 回4楼yjseu的帖子 正好碰到官方团队,还有一个问题,我在oss_list_upload_part的时候返回了302,URL暂时性转移 是什么参数造成的 ------------------------- 回6楼yjseu的帖子 UploadID    39017AD75DC54B7B9C1F5912C6FB5CAD UserID        UH6Z3PIQeLyACIu2 object name    test.mp3 bucket         se-test 另外,web管理端没法批量删除multipart的碎片?只能一个一个点吗... ------------------------- 回6楼yjseu的帖子 请问能获得QQ或者电话支持吗~ 在线等 挺急的... ------------------------- 回7楼shotedit的帖子 对于multipart upload(以下简称MPU)还有几点疑问 比如有C:\A.ZIP,用MPU方式上传到testbucket,objectname为obj_a.zip,分成100 parts, 某次上传了前50个parts, 问题1: 如果对这50个parts做了complete操作,就会产生一个只有一半大小的obj_a.zip object,这显然对于下载端来说不太合适,所以如果我需要断点续传,就需要保留这50个parts作为碎片,那么就有问题2 问题2: 我有办法获得我这个bucket下所有MPU所产生的碎片吗(不通过UPLOADID)?如果可以获得,那么我可以匹配UPLOADID,对这些碎片进行断点续传,那么获得的信息里有本地文件的信息吗?我如何找到这个UPLOADID真正对应的本地文件?以及part信息(completedpartindexs,partcount, partsize, filesize等)? 问题3: 由于考虑到不同terminal上传,如果每台机器都检查mpu碎片,那么就会造成混乱,所以暂且猜测是不支持获得所有碎片的,所以我必须在本地有自己的记录,uplooadid和对应的文件,以及part信息(completedpartindexs,partcount, partsize, filesize等),是这样的吗? ------------------------- 回 11楼yjseu的帖子 目前是单线程,不过模块是按照多线程做的 对于MPU,多线程会对速度有提升吗?我是感觉国内ISP给提供的上传带宽也就那么多,线程再多也没法扩展带宽,还不如单线程来的方便 ------------------------- 回 12楼yjseu的帖子 呃 好吧...只能写代码去删?我是在WEB管理页面看到好多碎片,想删掉就只能一个一个点.... ------------------------- 回 12楼yjseu的帖子 对了 MPU对文件大小有限制吧? 我测试的时候用的2MB的文件,list upload part就是302....但是之前我记得用2MB文件是在complete的过程,返回了类似file too small这个意思的错误码. 这个302有点匪夷所思. ------------------------- 回 19楼yjseu的帖子 又遇到奇怪问题了.abort的时候返回204.... ID 8215494A615342DEA9B8ADEA99E4B0B5 求官方大哥帮忙... ------------------------- 回 19楼yjseu的帖子 经过WEB端查看,发现abort返回204也成功的abort了.... ------------------------- 回 22楼yjseu的帖子 好吧...=.= ------------------------- 回 22楼yjseu的帖子 MPU是否要求本地文件路径以及OBJECTNAME都没有中文? 本地文件路径有中文会有-985(openfilefailed) objectname有中文会在init mpu的时候返回400 unknown error ------------------------- 回 25楼yjseu的帖子 C SDK里面结构给的不都是multibyte?我是特意转成ansii再拷贝进去的 ------------------------- 回 25楼yjseu的帖子 哈喽...在线等=.= ------------------------- 回 28楼yjseu的帖子 嗯嗯 好用了 还有个问题,一个instance内,如果我有线程在操作,比如在uploadpart,那我另一个线程可以调用oss函数吗? 我这遇到个问题: 上传线程在upload,界面响应到要abort另一个任务(不是upload的那个),但是abort就返回-980

shotedit 2019-12-01 23:49:01 0 浏览量 回答数 0

问题

【精品问答】媒体处理

montos 2020-04-08 19:12:05 4 浏览量 回答数 1

回答

工作流消息通知配置 在控制台—》媒体转码—》媒体库设置—》工作流—》设置工作流配置通知,通知创建可参考【通知创建】;12 配置成功后,在媒体库上传资源或者采用其他方式上传资源到工作流的输入bucket的输入路径下,就会触发消息服务的通知。 注意事项: 配置的通知必须选择与工作流相同区域的通知才可以; 2.2获取通知消息 用户可以通过代码获取通知消息,MNS 通过发送 POST 请求将 Notifications 推送到 Endpoint 端,Notifications 格式支持两种:XML 完整格式和 SIMPLIFIED 精简格式;用户正常处理通知需程序端接收到通知后,响应204状态码,如果未响应204状态码,对应的通知会重发。 php 获取通知示例如下: 进阶示例:验证对应通知是否是源自消息服务,并接收通知,参考:HTTP的消息接收服务 Java 实现示例; 2.3 解析通知消息 MTS通知的基本结构由两部分构成:消息服务结构体及消息正文;其中消息正文是MTS服务的消息结构体。具体请参考如下示例: topicowner DBtest subscriber dctest 63F5B22A460AE417-1-159CB2EB8BC-200000003 07C9BDAF7FF4EF307C523812565556AF {"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","MediaWorkflowExecution":{"MediaWorkflowId":"8e24e391e3fe4887b236668368189e74","Name":"新建工作流_1481600805788","RunId":"9c897328fb084b089bb73e21fdba16f3","MediaId":"4a4e965cb652413a91060be2706ddfbe","Input":{"InputFile":{"Bucket":"hzaaa","Location":"oss-cn-hangzhou","Object":"m3u8SegementIn72/1.mp4"}},"State":"Running","ActivityList":[{"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","StartTime":"2017-01-23T11:55:53Z","EndTime":"2017-01-23T11:55:53Z"}],"CreationTime":"2017-01-23T11:55:53Z"}} 1485172553916 https://mnstest.oss-cn-hangzhou.aliyuncs.com/x509_public_certificate.pem 其中: topicowner DBtest subscriber dctest 63F5B22A460AE417-1-159CB2EB8BC-200000003 07C9BDAF7FF4EF307C523812565556AF 该部分内容是消息服务结构体,消息服务结构体各个标签含义看【标签含义】。 {"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","MediaWorkflowExecution":{"MediaWorkflowId":"8e24e391e3fe4887b236668368189e74","Name":"新建工作流_1481600805788","RunId":"9c897328fb084b089bb73e21fdba16f3","MediaId":"4a4e965cb652413a91060be2706ddfbe","Input":{"InputFile":{"Bucket":"hzaaa","Location":"oss-cn-hangzhou","Object":"m3u8SegementIn72/1.mp4"}},"State":"Running","ActivityList":[{"RunId":"9c897328fb084b089bb73e21fdba16f3","Name":"activityStart","Type":"Start","State":"Success","StartTime":"2017-01-23T11:55:53Z","EndTime":"2017-01-23T11:55:53Z"}],"CreationTime":"2017-01-23T11:55:53Z"}} Message标签中的内容是MTS消息结构体,用户可以根据message中的内容解析得到输入文件URL(根据”Input”标签内容拼接得到),实例ID(”RunId”)等;用户可以调用MTSAPI接口,根据输入URL查询得到媒体转码结果,由于可能存在同名文件上传的场景,导致相同的URL触发了多次工作流任务,一个工作流可以配置多个转码截图任务,所以一个媒体转码结果可能包含多个实例的执行结果,用户可以根据通知消息中的实例ID定位到该次转码任务结果; Message常见字段含义看下表: 3 Message中其他字段的含义看【字段含义】 注意事项: Message中的”Type”:”Start”表示开始转码,”Type”:”Report”表示转码结束;

保持可爱mmm 2020-03-30 11:57:37 0 浏览量 回答数 0

问题

大数据时代——数据存储技术百问

yq传送门 2019-12-01 20:27:42 31965 浏览量 回答数 35

问题

shiro+ssm做权限管理,使用自定义Realm项目启动就报错?报错

爱吃鱼的程序员 2020-06-06 10:15:42 0 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播