项目中需要用到腾讯云视频,做了一个完整的流程尝试,总结一下。

基本需求是通过后台管理页面上传视频,然后通过网页,Android和iOS播放视频。

腾讯视频分三大部分:视频上传,视频处理,视频播放,相应都有很多SDK和备选功能,特别是视频处理功能非常多。

1. 准备工作

腾讯云账号首先必须认证,然后申请AppId和相应的密钥

image.png

最后要说腾讯云视频点播是需要付费的,免费的笔者测试了一个视频,有时候刷新播放的时候会超时。

2. 上传视频

上传视频可以直接在腾讯云的视频中心上传,但是很多情况是需要通过程序来上传的。提供了后台各种语言上传的SDK,也包括了Android和iOS的,基本就是腾讯COS(对象存储)上传文件的进一步封装。

我们这里主要是尝试通过Web来上传。上传分2部分,一部分是需要我们写一个服务端WebAPI来返回一个signature。这个完全可以拷贝腾讯提供的签名例子,主要是把密钥id和密钥key放在服务端计算POST返回签名值。我这里用的是NetCore的例子

[HttpPost]

public string Post()

{

Signature sign = new Signature();

sign.m_strSecId = "用自己的secid";

sign.m_strSecKey = "用自己的seckey";

sign.m_qwNowTime = Signature.GetIntTimeStamp();

sign.m_iRandom = new Random().Next(0, 1000000);

sign.m_iSignValidDuration = 3600 * 24 * 2;

return sign.GetUploadSignature();

}

另外一部分是基于H5写的上传视频,腾讯提供了web的sdk,以下是一个包含上传视频,截图加进度的完整的例子

var uploadvideo = function () {

var videoFile = document.getElementById("vname").files[0];

var coverFile = document.getElementById("cname").files[0];

qcVideo.ugcUploader.start({

videoFile: videoFile,

coverFile: coverFile,//封面,类型为 File

getSignature: getSignature,

error: function (result) {

alert('上传失败的文件类型:' + result.type+"\n"+'上传失败的原因:' + result.msg);

},

progress: function (result) {

document.getElementById("progress").value=result.shacurr*100;

},

finish: function (result) {

var info ={

"上传结果的 fileId":result.fileId,

"上传结果的视频名称": result.videoName,

"上传结果的视频地址":result.videoUrl,

"上传结果的封面名称":result.coverName,

"上传结果的封面地址":result.coverUrl

}

alert(JSON.stringify(info,null,2));

console.log(JSON.stringify(result,null,2));

}

});

}

上传成功后截图如下:

image.png

注意这里要播放一个视频,只需要传递一个fileid,如果要下载视频文件才需要视频url。

上传成功后我们在视频中心可以看到上传的列表。

3. PC端播放视频

在PC端通过浏览器播放非常简单,直接基于腾讯的例子简单改一下AppId和fileid,在PC端各种浏览器兼容很好。

var player = TCPlayer('player-container-id', { // player-container-id 为播放器容器ID,必须与html中一致

fileID: '7447398156669699331', // 请传入需要播放的视频filID 必须

appID: '1256923424' // 请传入点播账号的appID 必须

//其他参数请在开发文档中查看

});

注意要在公众账号上使用,需要单独为一个视频申请,腾讯会审核:

image.png

4. 手机端播放视频

手机端播放有2种方式,一是也是基于webview播放以上例子,但是兼容不好,对于某些格式还不支持,如下图:

image.png

我们这里目前只使用点播mp4格式,手机端浏览器应该支持,在AppWorker的IDE下使用do_Webview组件加载这个html文件

ui("do_WebView_1").url="http://192.168.31.176:5555/videoplayer.html";

这个html是运行在局域网的一个web服务。

在Android手机上我们推荐使用do_TencentWebview组件效果会更好,这个组件就是集成腾讯的X5webview,可以规避Android不同系统下浏览器的差异。

播放的效果如下:

image.png

还有一种方式就是使用腾讯提供的Android和iOS SDK,这需要AppWorker官方封装一个do_TencentVideoPlayer的组件,效果肯定比基于webview的好很多,官方很快会封装这个组件。

最后所有示例都可以从Github上下载,包括生成证书的服务,上传视频和播放视频的html。需要运行在NetCore下。

php腾讯云+视频上传失败,腾讯云视频上传和播放尝试总结相关推荐

  1. uni-app上传视频在手机上上传失败,在web端上传成功

    最近在写uni-app,上传视频的时候在web端电脑上没有链接手机调试,正常 但是!!当我打包在手机上上传视频的时候上传不上去,当我用手机连接电脑调试的时候(手机和电脑一定要在同一个局域网)发现上传视 ...

  2. qq视频转码失败怎么办_微信视频大于25M发送失败怎么办?学会这3招教你秒传视频...

    微信在我们的生活和工作中可谓是占有重要地位呀,接收和传送文件是常有的事.不知道大家有没有发现当我们发送视频时,超过25M的就不能发送出去了!今天教给大家三招,大于25M的视频很快就可以发送出去啦! 一 ...

  3. 坚果云显示连接服务器失败怎么办,坚果云提示同步过程中遇到错误,怎么解决?...

    为什么出现同步错误的提示? 坚果云Windows客户端,在新版本4.0以后,当同步完成后会检查是否有文件遗漏.如果有,则会弹出一个气泡,通知用户 "同步过程中遇到了几个错误"  . ...

  4. 腾讯tp显示服务器连接失败,腾讯tp安全助手ip错误

    你好,请问你现在显示IP地址错误,那么是否能够上网?如果可以上网,且你使用的是ADSL虚拟拨号上网方式,并未通过路由器或通过局域网上网,那么只需为本地连接指定一个静态IP地址即可. 若是XP,可右击桌 ...

  5. 客户端怎么远程上服务器失败,远程客户端连接不上,与服务器那台,跨网络,怎么解决...

    对应版本:用友U8.52 对应产品线:供应链 对应模块:销售管理模块 问题现象:1.销售发货单参照单生成不能增行(充许超计单发货)?新增行单价为0如何体现.2.到货单中合格数不可填写(不用GSP质量管 ...

  6. go walk 开发window界面,上传文件到阿里云oss -- 服务器端

    前面我们完成了一个网页端的上传oss程序:https://blog.csdn.net/daily886/article/details/103366145 现在我们把前后端分离 前端使用walk开发, ...

  7. vue+el-upload组件封装(图片,文件上传至oss阿里云)

    1.安装ali-oss npm install ali-oss --save 2.oss方法封装 新建utils/ali-oss-upload.js文件(代码如下) const OSS = requi ...

  8. heic图片上传失败

    图片上传突然出现有时会上传失败的情况,一顿查找因为上传文件的接口返回了500状态码,由于接口提供方人员问题(懒散惯了,无组织无纪律,跨部门没办法..),没有认真查找自己服务器日志,往别的地方扯,这就非 ...

  9. html选择文件上传ajax,使用HTML5实现文件上传(ajax方式)以及进度显示

    String path = request.getContextPath(); %> 使用XMLHttpRequest上传文件 var xhr =new XMLHttpRequest(); // ...

最新文章

  1. VC2005与IE8的冲突解决
  2. Ubuntu/Debian 系统切换Java(JVM),修改Java版本,JAVA_HOME
  3. 洛谷 P1843 奶牛晒衣服
  4. GeosparkViz 可视化
  5. 八十八、CSS两列三列的布局方式
  6. centos 安装boost(caffe需要)
  7. [3.3训练赛]One-Dimensional(矩阵快速幂),Freda的迷宫(无向图强连通分量+并查集),一道防AK好题
  8. Linux系统编程(五)时序竞态
  9. 使用Module自定义网站定义(Site Definition)
  10. 包包的结构制图_15种常见领型的结构制图
  11. php历史上的今天源码,代码获取历史上的今天发生的事_基础知识
  12. 计算机数日期,计算机如何计算两个日期之间的天数
  13. 简单英文题 25 Sequence Search(python)
  14. MySQL截取字符串的方法-substring_index
  15. Python使用property函数和使用@property装饰器定义属性访问方法的异同点分析
  16. [math][mathematica] archlinux 下 mathematica 的安装 (科学计算软件 mathematica/matlab/sagemath)...
  17. 两个整形变量值交换的五种境界
  18. 快速查找文件的神器Listary
  19. arm-linux测网速工具,用Iperf工具测试网速和网络质量
  20. PG in not in系列方案比较

热门文章

  1. 【HTML】中国天气天气插件调用
  2. C#LeetCode刷题之#367-有效的完全平方数(Valid Perfect Square)
  3. C#LeetCode刷题之#234-回文链表(Palindrome Linked List)
  4. jQuery实现一个优雅的返回顶部
  5. freecodecamp_关于freeCodeCamp-常见问题
  6. 百度人脸识别 人脸识别模型_当我说人脸识别很容易时,他们笑了。 但是可以。...
  7. 如何简化React应用程序中的状态-轻松实现Redux
  8. gitter 卸载_最佳Gitter渠道:游戏开发人员
  9. Team Foundation Server 2010 安装、部署与配置(七):创建 Team Project 时的一个 Issue:TF218027 .
  10. MVC教程第一篇:准备工作