使用爱奇艺开放平台上传视频

一、问题背景:

在最近的一个项目中,需要有一个上传视频的功能,原先使用的优酷开放平台,但是由于很久没有维护了,导致账号过期了,且优酷开放平台在17年三月份之后,就暂停新应用的创建和生成新的应用,所以重新选用了爱奇艺开放平台。

二、使用步骤

(说明:申请账号,创建应用和审核,请参考官方的文档,我在这里就不做详细的说明了,这里直接上代码。不过我也是第一次使用这个爱奇艺的开放平台,所以可能会有错误,但是功能是可以实现的)

引用sdkbase_min.js

HTML:

<div class="container">
				<form  class="well form-horizontal"  name="video-upload">
					<fieldset>
						<div class="control-group">
							<label class="control-label" for="input01">选择文件:</label>
							<div style="display:inline-block;margin-left:20px" id="chooseFile"><a style="width:90px;display:inline-block;background:#eaeaea;border:1px solid #ddd;text-align:center;padding:2px"  href="javascript:void(0);" id="chooseFileBtn">上传</a></div>
							<span id="file_name"></span>
						</div> 
							<div class="control-group">
								<label class="control-label" for="input01">标题:</label>
								<div class="controls">
									<input type="text" class="input-xlarge" id="input01" name="title" onkeyup="checkTitle()" onkeydown="checkTitle()">
									<span id="title_error_span" style="display:none">
										<img src="static/images/shipin/error02.gif" width="17" height="17" alt="" />
										&nbsp;<span id="title_error_text">请输入标题</span>
									</span>
									<span id="title_right_span" style="display:none">
										<img src="static/images/shipin/right.gif" width="17" height="17" alt=""/>
										&nbsp;<span>标题可用</span>
									</span>

								</div>
							</div>
							<div class="control-group">
								<label class="control-label" for="textarea">简介:</label>
								<div class="controls">
									<textarea class="input-xlarge" id="textarea" rows="3" name="description" onkeyup="checkDric()" onkeydown="checkDric()"></textarea>
									<span id="description_error_span" style="display:none">
										<img src="static/images/shipin/error02.gif" width="17" height="17" alt="" />
										&nbsp;<span id="description_error_text">简介过长</span>
									</span>
									<span id="description_right_span" style="display:none">
										<img src="static/images/shipin/right.gif" width="17" height="17" alt=""/>
										&nbsp;<span>简介可用</span>
									</span>
								</div>
							</div>
							<div class="control-group">
								<label class="control-label" for="input02">标签:</label>
								<div class="controls">
									<input type="text" class="input-xlarge" id="input02" name="tags" onkeyup="checkTags()" onkeydown="checkTags()">
										<span class="help-inline"></span>
									<span id="tags_error_span" style="display:none">
										<img src="static/images/shipin/error02.gif" width="17" height="17" alt="" />
										&nbsp;<span id="tags_error_text">请输入标签</span>
									</span>
									<span id="tags_right_span" style="display:none">
										<img src="static/images/shipin/right.gif" width="17" height="17" alt=""/>
										&nbsp;<span>标签可用</span>
									</span>
								</div>
							</div>
							<div class="form-actions">
								<button type="button" disabled="disabled" class="btn btn-primary start"  id="btn-upload-start" >
									<i class="icon-upload icon-white"></i>
									<span>开始上传</span>
								</button>
								<div class="percent" id="percent"></div>
    							<div class="percent_text" id="percent_text"></div>
							</div>
							</fieldset>
						</form>
						<div class="row" >
							<div class="span5" id="upload-status-wraper" ></div>
						</div>
						<div class="well"><h3>说明</h3><ul><li>最大支持上传<strong>1 GB</strong> 视频文件</li><li>
							允许上传的视频格式为:wmv,avi,dat,asf,rm,rmvb,ram,mpg,mpeg,3gp,mov,mp4,m4v,dvix,dv,dat,
							<br/>
							mkv,flv,vob,ram,qt,divx,cpk,fli,flc,mod。不符合格式的视频将会被丢弃,请确保视频格式的正确性,避免上传失败
						</li></ul>
						</div>
					</div>

JS代码

/*解决input中placeholder值在ie中无法支持的问题*/
		    $(document).ready(function(){
		        var doc=document,inputs=doc.getElementsByTagName('input'),supportPlaceholder='placeholder'in doc.createElement('input'),placeholder=function(input){var text=input.getAttribute('placeholder'),defaultValue=input.defaultValue;
		        if(defaultValue==''){ input.value=text}
		          input.onfocus=function(){
		              if(input.value===text){this.value=''}};
		              input.onblur=function(){if(input.value===''){this.value=text}}};
		              if(!supportPlaceholder){
		                  for(var i=0,len=inputs.length;i<len;i++){var input=inputs[i],text=input.getAttribute('placeholder');
		                  if(input.type==='text'&&text){placeholder(input)}
		            }
		        }
		   // 文件上传按钮div,这个div包裹文件上传按钮。文件上传按钮貌似不能是button类型,不知道为什么,反正用的是他们demo里的没有变
	            var btn = document.getElementById("chooseFile");
	            // 初始化
                var vcop = new Q.vcopClient({
                  uploadBtn:{
                      dom:btn,
                      btnH:"32px",
                      btnW:"62px",
                      btnT:"100px",
                      btnL:"100px",
                      btnZ:"999",
                      hasBind:false},
                  appKey:"XXXXXXXXXXX",  // 填写申请的app key 
                  appSecret:"XXXXXXXXXXXXXXXXXXXXXXX", // 填写app secret
                  managerUrl:"http://openapi.iqiyi.com/",
                  uploadUrl:"http://upload.iqiyi.com/",
          		  needMeta:false
              	});
              	// 企业几授权
                vcop.getAuthEnterprise(function (data) {
                    if(data){
                        vcop.authtoken = data.data.access_token;
                    }
                });
                // 文件信息
                var fileinfo = null;
                // 上传组件
                var uoploader = null;
                // 上传点击事件
              	$("#chooseFileBtn").click(function(){
              		uoploader=vcop.initUpload({
    				slicesize:1024*128,
        	                access_token:vcop.authtoken, 
        	                device_id:"test", 
        	                uid:"test",
        	                allowType:["xv","avi","dat","mpg","mpeg","vob","mkv","mov","wmv","asf","rm","rmvb","ram","flv","mp4","3gp","dv","qt","divx","cpk","fli","flc","m4v","pfv"]  // 重置类型
        	                }, {
    	                onSuccess:function (data) {
    	                    if(data && data.data){
    	                        fileinfo = data.data;
    	                        $("#file_name").text(data.data.file_name);
    	                        $("#input01").val(data.data.file_name);
    	                        $("#textarea").val(data.data.file_name);
    	                        checkDric();
	    	   					checkTitle();
	    	   					checkTags();
    	                    }
    	                },
    	                onError:function (data) {
    	                    alert("错误");
    	                }}
    	            );
    	                // 初始化上传组件
              		uoploader.initOneFile({btnW:"100px",btnH:"100px",btnT:"100px",btnL:"12px"});
                });
		        
                // 开始上传
              	$("#btn-upload-start").click(function(){
                  	// 上传按钮不可用
					$("#btn-upload-start").attr("disabled","disabled");
					// 设置meta信息
					vcop.setMetadata({
			            file_id:fileinfo.file_id,
			            file_name:fileinfo.file_name,
			            description:fileinfo.file_name, 
			            uploader:uoploader          // 20130819 需手工设置meta
			        }, function (data) {
				        console.log(data);
			        })
			        // 开始上传
              		uoploader.startUpload(fileinfo, {
                        onFinish:function (data) {
              				$("#btn-upload-start").attr("disabled",false);
                            if (data && data.manualFinish === true) {
                                uoploader.finishUpload({
                                    onSuccess:function () {
                                        window.location.href='<%=basePath%>personal/uploadVideo?videoId='+fileinfo.file_id ;
                                    },
                                    onError:function () {
                                        alert("上传失败");
                                    }
                                });
                            }else{
                                alert("上传成功");
                            }
                            setTimeout(function () {
                                uoploader.delLocal(fileinfo.file_name,fileinfo.file_id);     // 20141227
                                resetPer();
                            }, 2000);
                        },
                        onError:function (data) {
                        	$("#btn-upload-start").attr("disabled",false);
                            if(data.msg){
                                // 续传
                                if(data.msg=='network break down'){
                                    breakdown=true;
                                    uoploader.pauseUpload();
                                }
                            }
                            else{
                               alert("上传失败");
                            }
                            
                        },
                        onProgress:function (data) {    // 5/7 增加速度,剩余时间
                        	var per = document.getElementById("percent");
                            per.style.width = data.percent + "%";
                            $("#percent_text").text("上传中....速度:"+data.speed+"kb/s , 剩余时间:"+data.remainTime + "s");
                        }
                    });
                });
		    });
                
  
  function checkTitle(){
  	//显示数据
  	$("#title_error_span").hide();
	$("#title_right_span").hide();
	//获取昵称
	var title = $("#input01").val();
	//判断用户名是否为空
	if(title == "" || title == null){
		$("#title_right_span").hide();
		$("#title_error_span").show();
		$("#btn-upload-start").attr("disabled","disabled");
	}else if(title.length>30){
		$("#title_error_text").text("标题最多能输入30个字");
		$("#title_right_span").hide();
		$("#title_error_span").show();
		$("#btn-upload-start").attr("disabled","disabled");
	}else{
		$("#title_error_span").hide();
		$("#title_right_span").show();
		$("#btn-upload-start").attr("disabled",false);
	}
  }
  
  
  function checkTags(){
	  var txt=new RegExp("[ ,\\`,\\~,\\!,\\@,\#,\\$,\\%,\\^,\\+,\\*,\\&,\\\\,\\/,\\?,\\|,\\:,\\.,\\<,\\>,\\{,\\},\\(,\\),\\',\\;,\\=,\"]");
  //显示数据
	$("#tags_error_span").hide();
  	$("#tags_right_span").hide();
	var tags = $("#input02").val();
	//判断用户名是否为空
	if(tags == "" || tags == null){
		 $("#tags_right_span").hide();
		 $("#tags_error_span").show();
		 $("#btn-upload-start").attr("disabled","disabled");
	}else if(tags.length<2 || tags.length>12){
		 $("#tags_right_span").hide();
		 $("#tags_error_span").show();
		 $("#tags_error_text").text("标签内容限定2~12的字符");
		 $("#btn-upload-start").attr("disabled","disabled");
	}   //特殊字符正则表达式
	else  if (txt.test(tags)){
		 $("#tags_right_span").hide();
		 $("#tags_error_span").show();
		 $("#tags_error_text").text("标签含有特殊字符");
		 $("#btn-upload-start").attr("disabled","disabled");
    }else{
		 $("#tags_error_span").hide();
		 $("#tags_right_span").show();
		 $("#btn-upload-start").attr("disabled",false);
	}
  }
  /**
   * 检查简介
   */
  function checkDric(){
	//显示数据
	$("#description_error_span").hide();
	$("#description_right_span").hide();
	  var content = $("#textarea").val().toString();
	  
	  var len = 0;
		if (content != null && content != "") {
			for ( var j = 0; j < content.length; j++) {
				var str = content.charAt(j);
				var reg = /^[\u4E00-\u9FA5]+$/;
				if (reg.test(str)) {
					len += 2;
				} else {
					len += 1;
				}
			}
		}

	  if(content == "" || len == 0 ){
		  $("#description_right_span").hide();
		  $("#description_error_text").text("请输入简介");
		  $("#description_error_span").show();
		  $("#btn-upload-start").attr("disabled","disabled");
	  }
	 
	  if(len <= 25 && len >0){
		  $("#description_error_span").hide();
		  $("#description_right_span").show();
		  $("#btn-upload-start").attr("disabled",false);
	  }else{
		  $("#description_right_span").hide();
		  $("#description_error_span").show();
		  $("#btn-upload-start").attr("disabled","disabled");
	  }
	  
  }

上传完成后,页面播放。JS代码

// 获取视频id
	var videoId = $("#videoId").attr("value");
	// 初始化
	var vcop = new Q.vcopClient({
        appKey:"618c7aca5e6d47648e6c4d6fd2e246af",  // 填写申请的app key 
        appSecret:"13a3fbb37e707ec19322c0478d860e7c", // 填写app secret
        managerUrl:"http://openapi.iqiyi.com/",
        uploadUrl:"http://upload.iqiyi.com/",
		needMeta:false
    	});
	  // 授权
    vcop.getAuthEnterprise(function (data) {
          if(data){
              vcop.authtoken = data.data.access_token;
              console.log(vcop.authtoken);
              // 获取视频信息
              vcop.getVideoInfo({
                  file_ids:videoId // 获取视频信息
              }, function (result) {
            	  console.log(result);
            	  console.log("1:"+result);
            	  console.log("2:"+(result.code == "A00000"));
            	  if(result.code == "A00000"){
            		  var _r = result.data;
            		  console.log("3:"+_r)
            		  console.log("4:"+(_r != '[]'));
            		  if(_r != '[]' && _r != undefined && _r != '' && _r != null){
            			  if(_r[0].fileStatus == 1){ // 发布中
            				imghtml = "<img  src='static/images/shipin/shipin_zhuanma.gif' />";
                      		$("#shipin_img_div").html(imghtml);
            			  }else if(_r[0].fileStatus == 2){ // 已经发布
            				$("#shiping_img_div").css("display","none");
            			        // 这行代码主要是为了获取vid和tvid
            				$.get("http://openapi.iqiyi.com/api/file/fullStatus?access_token="+vcop.authtoken+"&file_id="+videoId,function(data){
            					data = $.parseJSON(data);
            					var swfUrl = data.data.swfurl;
            					var vid =  swfUrl.substring(swfUrl.indexOf("vid=") + 4, swfUrl.indexOf("&tvId"));
            					var tvid = swfUrl.substring(swfUrl.indexOf("tvId=") + 5, swfUrl.indexOf("&cnId"));
            					// 这行代码,copy open.iqiyi.com -->我的应用 -->播放器设置的那段代码
            					imghtml = "<iframe src='http://open.iqiyi.com/developer/player_js/coopPlayerIndex.html?vid="+vid+"&tvId="+tvid+"&sign=5dd681d8af3e02e699f7648b09d6a7cacd269ed2e98f3fa0b3c125d1df1283b3&appKey=618c7aca5e6d47648e6c4d6fd2e246af&appId=8769' frameborder='0' width='100%' height='100%' allowfullscreen='true'></iframe>";
            					$("#youkuplayer").html(imghtml).css("display",'inline-block');
            				});
            			  }else{ //审核未通过,不存在或已删除 ,上传中
            				imghtml = "<img  src='static/images/shipin/shipin_pingbi.gif' />";
                      		$("#shipin_img_div").html(imghtml);
            			  }
            		  }else{
            			imghtml = "<img  src='static/images/shipin/shipin_zhuanma.gif' />";
                    	$("#shipin_img_div").html(imghtml);
            		  }
            	  }
              });
          }
      });

原文地址:http://blog.51cto.com/fengcl/2071112

时间: 2024-08-12 13:28:48

使用爱奇艺开放平台上传视频的相关文章

手动抓取爱奇艺和优酷等视频网站的视频

今天就给大家讲讲怎么手动抓取爱奇艺和优酷等视频网站的视频该方法适用于很多视频网站.因为有的网站不支持我们用一些软件比如硕鼠和维棠等的解析下载,所以我就找到了这个方法,本来优酷之前是可以的,不过现在优酷还是不支持硕鼠和维棠的解析了.这两个网页是原帖的地址,其实我之前知道这个方法,不过这个人提供了一个软件比较好用,我把他录制的视频提取出来了,下面看看吧. 其实原理都是一样,这些视频网站为了让视频更快的缓存,当然也有很多其他原因,把视频分成了很多段,所以我们只需要单独下载好每一段视频,然后把这些视频合

动态获取爱奇艺上传视频mp4格式url地址

有时候,在工作中有些客户需要用到视频,我们大家都知道视频是非常的耗费流量的,因此,如果因为项目要求客户单独买台视频服务器是非常划不来的.那么将视频上传到优酷,爱奇艺等视频网站来托管那是一件很好的解决方案. 今天主要和大家聊下如果使用爱奇艺开放平台中来动态获取自己上传视频的mp4格式url地址.我们闲话少说,直接开始. 首先先看下通过这种方式获取的视频播放效果: 一.我们需要注册成为爱奇艺开发者       爱奇艺开放平台: http://open.iqiyi.com/index.html   二

爱奇艺视频与腾讯视频竞品分析

随着视频直播业的火爆,市场上视频直播的APP也层出不穷,这些APP主拼的内容和资源,更需进一步推动用户付费习惯的养成.从用户关注因素出发,以用户体验的多方面的校对市场上热门视频直播类APP进行对比分析,针对痛点问题提出建议. 根据艾媒咨询数据显示,2015年中国移动视频用户规模达到4.31亿;预计到2018年,中国移动视频用户规模将达到6.95亿.在如此规模庞大的市场面前,视频产品作为内容导向的产品,更应避免同质化,注重打造差异化优势,从移动端用户特性出发,提高内容质量,优化各项服务,提升用户感

捕捉那个心动的刹那:三个‘变数’解析爱奇艺AI应用元年

今天的孩子跟以前最大的区别是什么?答案或许有很多,但有一个区别非常有代表性:这是躺在视频上理解世界的一代人. 在全域网络.智能终端普及化和高度发达的流媒体技术支撑下,视频已经与几年前发生了天翻复地的变化.直播.短视频可以随时享用,视频成为驱动社交.电商.娱乐的最大入口.整个视频产业链的发展效率,可以说是近几年互联网产业里的翘楚. 那么问题也来了,下一步视频还会往何处去呢?最大的可能,还是AI. 这并非作为AI媒体的"自卖自夸",而是基于AI带来的感知升级.用户学习.自行判断能力的合理推

爱奇艺喜提纳斯达克,首日破发,渴望“为我们的家人带来更多欢乐”

作为纳斯达克最受欢迎的故事,视频网站"中国队"成功实现了二重唱. 28日晚间,主打二次元的B站在美上市,整体募资规模4.83亿美元.但这只是开胃的头盘,所以一不小心就被破发了. 29日晚,纳斯达克迎来中国在线视频网站爱奇艺敲钟,这一波每股18美元,融资规模22.5亿美元,股票代码:IQ. 然后,也一不小心,被B站连累,首日破发. 有意思的是,在爱奇艺的招股书中,有这样一句话: "我们渴望成为一家以科技为基础的娱乐巨人,给人们和他们的家庭带来乐趣和欢乐." 是不是看着

Android重量级源码之高仿爱奇艺客户端

Android源码之高仿爱奇艺 支持平台:Android   运行环境:Eclipse   开发语言:Java 下载地址:http://suo.im/6pzhx  源码简介 本源码是一套UI界面,高仿的爱奇艺.没有实现具体功能.本项目默认编码 UTF-8,需要的朋友可以拿去参考一下. 源码运行图    

爱奇艺广告技术沙龙---广告召回

爱奇艺技术沙龙——广告算法与架构设计-爱奇艺直播-爱奇艺 一.AI在视频广告中的应用: 1.广告的目的: 在一定周期,让尽可能多的人产生消费. 长周期:品牌广告(比如阿迪.nike等品牌),短周期:效果广告(比如平时打开网页出现在眼帘的广告). 消费行为:购买.激活.安装.下载.点击. 2.如何传达消费价值: 匹配需求:用户行为(搜索.浏览.点击等).统计特征(性别.年龄.地区等) 能够将用户想要看的广告适时地推到面前,让广告主的广告得到合理的投放. 展示价值:场景(点位)+效果(索引) 场景化

爱奇艺、优酷、腾讯视频竞品分析报告2016(二)

接上一篇<爱奇艺.优酷.腾讯视频竞品分析报告2016(一)> http://milkyqueen520.blog.51cto.com/11233158/1760192 2.4 产品设计与交互 2.4.1  视觉风格 APP设计风格从视觉效果上至少给用户传达了两个信息:一是APP的整体基调.二是APP的目标人群. 在设计风格表现上,颜色占据了80%以上的视觉体验.因此要做好设计风格,主要做好界面的颜色搭配和分布.另外颜色是有情感的,不同的色彩能给于用户不同的印象和感受,而且不同的人群对颜色偏好也

爱奇艺、优酷、腾讯视频竞品分析报告2016(一)

1 背景 1.1 行业背景 1.1.1 移动端网民规模过半,使用时长份额超PC端 2016年1月22日,中国互联网络信息中心 (CNNIC)发布第37次<中国互联网络发展状况统计报告>,报告显示,网民的上网设备正在向手机端集中,手机成为拉动网民规模增长的主要因素.截至2015年12月,我国手机网民规模达6.20亿,有90.1%的网民通过手机上网. 图 1  2013Q1~2015Q3在线视频移动端和PC端有效使用时长份额对比 根据艾瑞网民行为监测系统iUserTracker及mUserTrac