首页 > 其他分享 >阿里云点播SDK集成(一)上传篇

阿里云点播SDK集成(一)上传篇

时间:2024-09-25 16:00:54浏览次数:1  
标签:点播 vodInfo listener let result path 上传 SDK

目前项目中用到的就是阿里云的点播包括视频上传及播放,有做短视频的宝子们可以借鉴一下,避免少走弯路

 1.省略开通或配置阿里云点播服务的平台配置,直接是iOS移动端部分,pod SDK 尽量用最新的

#阿里云播放器
pod 'AliPlayerSDK_iOS'
#阿里云文件上传
pod 'VODUpload'

2.获取STS服务,所谓的STS就是获取对应的参数(accessKeyId、accessKeySecret、securityToken、expiration),这些服务存在自己后台(找自己后台去联调)

3.先说说上传,上传主要是通过阿里云的上传api进行实现的,特别要注意的一点就是我这边用的是swift的方式进行调用的,所以init的时候需要用`init`的方式调用

/**
 STS授权方式初始化
 @deprecated 使用`setKeyId: accessKeySecret: secretToken: expireTime: listener:`方法
 */
- (BOOL)        init:(NSString *)accessKeyId
     accessKeySecret:(NSString *)accessKeySecret
         secretToken:(NSString *)secretToken
          expireTime:(NSString *)expireTime
            listener:(VODUploadListener *) listener  
__attribute__((deprecated("This method is conflict with swift initialization method, use `setKeyId: accessKeySecret: secretToken: expireTime: listener:` instead.")));

下面还是用我的实际操作来说明:(注:1.上面说过在调用阿里云上传的时候init需要加引号`init`; 2.listener监听的这4个也需要写完整finish、failure、started、progress; 3.listener监听的回调都是在异步上回调的,如需渲染UI请切换到主线程; 4.上传需要传入文件的file,文章最后补充下这里)

class AliUploadFileManager: NSObject {
    //单例
    static let shared = AliUploadFileManager()
    //上传client
    var client = VODUploadClient()
    //监听listener
    let listener = VODUploadListener()
    
    //MARK: 上传文件
    public func uploadFileToOSS(filePath: String, complete: @escaping(String?, String?) -> Void, uploadResponse: @escaping(Bool) -> Void) {
     //这里根据业务情况填写或看阿里云文档 let vodInfo = VodInfo() vodInfo.title = "video_upload_after_name" vodInfo.desc = "video_upload_after_desc" vodInfo.cateId = 0 vodInfo.tags = "video_upload_after_tags" let path = filePath.replacingOccurrences(of: "file://", with: "") let uploadCertificate = VVSTSManager.shared let _ = client.`init`(uploadCertificate.accessKeyId, accessKeySecret: uploadCertificate.accessKeySecret, secretToken: uploadCertificate.securityToken, expireTime: uploadCertificate.expiration, listener: listener) //这里的workflowId和region也是平台配置的 client.workflowId = "" client.region = "" client.addFile(path, vodInfo: vodInfo) client.start() //监听上传完成 listener.finish = { (fileInfo, result) in print("上传完成", result?.imageUrl ?? "") DispatchQueue.main.async { complete(result?.videoId, result?.imageUrl) uploadResponse(true) } } //监听上传失败 listener.failure = { (fileInfo, code, message) in DispatchQueue.main.async { print("上传失败", code ?? "", message ?? "") uploadResponse(false) } } listener.started = { fileInfo in print("开始上传") } listener.progress = { fileInfo, upSize, totalSize in print("上传进度", upSize, totalSize) } } }

以上仅为借鉴,用oc的可以自己试着转换下,然后以下是调用部分:

//视频路径
AliUploadFileManager.shared.uploadFileToOSS(filePath: path) { videoId, videoURL in 
  //videoId 上传完成后的文件id;videoURL上传完成后的文件网络地址
}

回调可以拿到上传后文件的id和文件的网络地址(根据listener.finish的回调看完整的地址是否需要拼接, 图片亦是如此)

补充:

无论是第三方拍照或是从相册里面选择相片,都可以通过以下的方式获得图片、视频的本地URL Path,如果不能那你自己想办法,我自己用的是ZLPhotoBrowser简称ps,用其他工具的需要拿到asset后利用此原理获取URL Path

ps.selectImageBlock = { [weak self] (results, isOriginal) in
    guard let `self` = self else { return }
    if let result = results.first {
        if result.asset.mediaType == .video {
            ToastTool.showLoadingHUD("视频上传中……")
            let options = PHVideoRequestOptions()
            options.version = PHVideoRequestOptionsVersion.current
            options.deliveryMode = PHVideoRequestOptionsDeliveryMode.automatic
            PHImageManager.default().requestAVAsset(forVideo: result.asset, options: options) { asset, audioMix, info in
                if let urlAsset = asset as? AVURLAsset {
                    let path = urlAsset.url.absoluteString
                    //视频路径
                    AliUploadFileManager.shared.uploadFileToOSS(filePath: path) { videoId, videoURL in
                        //
                    }
                }
            }
        } else {
            let resources = PHAssetResource.assetResources(for: result.asset)
            if let resource = resources.first, let pathURL = resource.value(forKey: "privateFileURL") as? URL {
                //图片路径
                ToastTool.showLoadingHUD("图片上传中……")
                let path = pathURL.absoluteString
                AliUploadFileManager.shared.uploadFileToOSS(filePath: path) { imageId, imageURL in
                    resultBlock(result.image, nil, imageURL)
                }
            }
        }
    }
}

至此,上传的地方就完成可用于视频或图片的上传,赶进度的宝子们直接复制,有问题在下方评论,看到后第一时间答复

 

标签:点播,vodInfo,listener,let,result,path,上传,SDK
From: https://www.cnblogs.com/wm941142146/p/18431396

相关文章

  • 进阶美颜功能技术开发方案:探索视频美颜SDK
    视频美颜SDK(SoftwareDevelopmentKit)作为提升视频质量的重要工具,越来越多地被开发者关注与应用。接下俩,笔者将深入探讨进阶美颜功能的技术开发方案,助力开发者更好地利用视频美颜SDK。 一、视频美颜SDK的核心功能视频美颜SDK的核心功能主要包括人脸检测、肤色调整、磨皮美白、祛斑去......
  • Java开发:文件上传和下载
    一、文件上传使用MultipartFile类型接收参数;调用上传有两种方式:方式一:使用curl命令curl-F"file=@/data/filename.txt"http://localhost:8080/upload--verbose方式二:使用html,写一个form表单:同样是POST请求,为何文件上传的功能会慢?其中一个原因是,使用multipart/fo......
  • 直播平台美颜功能开发方案:基于视频美颜SDK的集成详解
    本篇文章,小编将于大家共同探究视频美颜SDK的美颜功能开发方案,帮助开发者深入理解其集成过程及关键技术。 一、美颜功能的重要性在竞争激烈的直播市场中,直播平台如何提升用户体验至关重要。美颜功能不仅能够改善主播的形象,提升观众的观看体验,还能增强互动性,增加用户留存率。优秀的......
  • 应用targetSdkVersion升级指导
    应用targetSdkVersion升级指导应电信终端产业协会(TAF)发布的《移动应用软件高API等级预置与分发自律公约》(以下简称《公约》)要求:截止到2019年5月1日所有新发布的应用API必须为26或更高,2019年8月1日现有应用API必须升级为26或更高。《公约》发布至今得到了国内主流互联......
  • Android连接蓝牙自定义封装SDK(基于Cordova与ionic)
    今天给大家分享一款基于Cordova与ionic框架自定义封装的Android手机连接蓝牙的插件。自己公司遇到的业务需求是,与第三方公司合作,需要在项目现场打印项目物资与物料验收单,后期提供给财务核对报销等。第三方公司提供蓝牙打印机与手持机,我们需要自己结合业务开发相对应的功能。......
  • 准备教师资格证等职业资格证考试的注意了:上传照片规范修改照片大小证件照制作软件收藏
    这是某地教师职业资格考试的证件照要求,一个是白底证件照,一个是照片大小200kb。这两项标准在很多考试报名中都是必须的,今天就把这个处理小程序分享给大家,一定要添加到我的小程序里面收藏好,不要等用的时候找不到耽误了大事。照片上传。考生须上传本人近6个月以内的免冠、正面、......
  • asp.net 上传大文件大小控制方案
    原文链接:https://blog.csdn.net/zdw_wym/article/details/7160942需要注意的是:在保存文件时,您应该确保指定文件的完整路径,并确保为ASP.NET使用的帐户提供要存储文件的目录的写权限。上载大文件时,可使用Web.Config元素的maxRequestLength属性来增加文件大小的最大允许值,例如:......
  • 谷歌地图 | Navigation SDK 重磅发布!为你的 App 注入导航新体验
    9月17日,Google地图正式发布NavigationSDKforAndroid和iOS!借助NavigationSDK,开发者们现在可以更轻松地为用户打造定制化的导航体验,提升用户满意度,增强用户粘性。无论是界面风格、路线规划还是实时交通信息,SDK都能满足你的需求,帮助你打造一款更具竞争力的App。图例1Nav......
  • S5cmd一个小文件上传对象利器
    使用s5cmd:高效上传小文件到S3的利器在云存储场景中,AmazonS3是非常常用的对象存储服务。但对于小文件的高效上传和管理,默认的AWSCLI可能并不是最优的工具。这时,一个名为s5cmd的工具因其轻量、快速的特性脱颖而出。特别是当你需要批量上传或管理大量小文件时,s5cmd......
  • 谷歌地图 | Navigation SDK 重磅发布!为你的 App 注入导航新体验
    9月17日,Google地图正式发布NavigationSDKforAndroid和iOS!借助NavigationSDK,开发者们现在可以更轻松地为用户打造定制化的导航体验,提升用户满意度,增强用户粘性。无论是界面风格、路线规划还是实时交通信息,SDK都能满足你的需求,帮助你打造一款更具竞争力的App。Navigati......