最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#結(jié)合JavaScript實現(xiàn)上傳視頻到騰訊云點播平臺的操作方法

 更新時間:2023年11月23日 10:29:27   作者:初九之潛龍勿用  
這篇文章主要介紹了C#結(jié)合JavaScript實現(xiàn)上傳視頻到騰訊云點播平臺,上傳視頻功能,主要要解決兩個問題,一是在服務(wù)端通過C#生成簽名和SDKID,二是在客戶端通過JavaScript上傳視頻到騰訊云點播服務(wù)器,感興趣的朋友跟隨小編一起看看吧

需求

在云培訓(xùn)系統(tǒng)里,制作視頻課件是我們的主要工作之一,制作完成后如果將這些素材存儲到服務(wù)器并進(jìn)行分發(fā)播放,是擺在我們面前的一個問題。最終我們選擇了騰訊云點播服務(wù),其加速分發(fā)播放幾乎適用所有需要展示圖片或音視頻媒體內(nèi)容的在線場景,借助遍布全球的大量 CDN 加速節(jié)點,在復(fù)雜的網(wǎng)絡(luò)環(huán)境也能提供高質(zhì)量的媒體內(nèi)容訪問服務(wù)。

上傳視頻功能,主要要解決兩個問題:

1、在服務(wù)端通過C#生成簽名和SDKID

2、在客戶端通過JavaScript上傳視頻到騰訊云點播服務(wù)器。

關(guān)鍵代碼

界面元素布局

放置一個DIV容器,包括 file 上傳控件(id:file1)、一個上傳進(jìn)度條的灰色背景層(id:ajax_uploadFiles_curbg)、一個傳進(jìn)度條的進(jìn)度圖片(id:ajax_uploadFiles_curprogress)、一個提示文字層(id:tip),圖片及層采用絕對定位,并在上傳過程中計算進(jìn)度值以決定進(jìn)度圖片的寬度。

示例代碼如下:

<div>
<input type="file" accept=".mp4,.mp3" id="file1"  onchange="vUpload()" />
<img id="ajax_uploadFiles_curprogress" style="z-index:1;position:absolute;left:0px;top:4px;width:0px;height:12px" alt="" src="win7progress.jpg" />
<div id="ajax_uploadFiles_curbg" style="display:none;z-index:0;position:absolute;left:0px;top:4px;width:203px;height:12px;background-color:Gray"></div>
<div id="tip" style="z-index:0;position:absolute; font-size:9pt;left:205px;top:2px;height:12px;"></div>
</div>

C# 實現(xiàn)服務(wù)端的簽名類

上傳之前需要提供您的開發(fā)APPID和開發(fā)密鑰,以生成有效的簽名,才可以進(jìn)行上傳操作,示例代碼如下:

public class Signature
         {
             public string m_strSecId;
             public string m_strSecKey;
             public int m_iRandom;
             public long m_qwNowTime;
             public int m_iSignValidDuration;
             public static long GetIntTimeStamp()
             {
                 TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1);
                 return Convert.ToInt64(ts.TotalSeconds);
             }
             private byte[] hash_hmac_byte(string signatureString, string secretKey)
             {
                 var enc = Encoding.UTF8; HMACSHA1 hmac = new HMACSHA1(enc.GetBytes(secretKey));
                 hmac.Initialize();
                 byte[] buffer = enc.GetBytes(signatureString);
                 return hmac.ComputeHash(buffer);
             }
             public string GetUploadSignature()
             {
                 string strContent = "";
                 strContent += ("secretId=" + Uri.EscapeDataString((m_strSecId)));
                 strContent += ("&currentTimeStamp=" + m_qwNowTime);
                 strContent += ("&expireTime=" + (m_qwNowTime + m_iSignValidDuration));
                 strContent += ("&random=" + m_iRandom);
                 byte[] bytesSign = hash_hmac_byte(strContent, m_strSecKey);
                 byte[] byteContent = System.Text.Encoding.Default.GetBytes(strContent);
                 byte[] nCon = new byte[bytesSign.Length + byteContent.Length];
                 bytesSign.CopyTo(nCon, 0);
                 byteContent.CopyTo(nCon, bytesSign.Length);
                 return Convert.ToBase64String(nCon);
             }
             public string getSign(int SignValidSeconds){
                 Signature sign = new Signature();
                 sign.m_strSecId = secretId;   //開發(fā)ID
                 sign.m_strSecKey = secretKey; //開發(fā)密鑰
                 sign.m_qwNowTime = Signature.GetIntTimeStamp();
                 sign.m_iRandom = new Random().Next(0, 1000000);
                 sign.m_iSignValidDuration = SignValidSeconds;
                 return rv = "{\"errcode\":0,\"sign\":\"" + sign.GetUploadSignature() + "\",\"sdkid\":\"1111111111\"}";    
             }
         }

調(diào)用 Signature類的 getSign(int SignValidSeconds) 方法生成簽名,參數(shù)為簽名有效期的秒數(shù)。 

上傳視頻的JS實現(xiàn)

實現(xiàn)功能之前需要引用一些必要的JS文件,我的資源下載鏈接地址:http://xiazai.jb51.net/202311/yuanma/poi_nojar_jb51.rar

//引用必要的三個js
<script src="jquery-3.2.1.min.js"></script>
  <script src="es6-promise.auto.js"></script>
  <script src="vod-js-sdk-v6.js"></script>
  <script type="text/javascript">
      var sign = "";
      var sdkid="";
      var tcVod = null;
      var timer=null;
      var ws=0;
      var fileobj=document.getElementById('file1');
      var curbg=document.getElementById('ajax_uploadFiles_curbg');
      var progressBarWidth=parseInt(curbg.style.width,10);
//重新或嘗試獲取sign
      function resign() {
          return sign;
      }
//與服務(wù)器API地址交互獲得簽名值和SDKID,有效時間為3600秒
      function getsign() {
          $.ajax({
              type: "Post",
              url: '<%=ViewState["apiurl"].ToString()%>',
              contentType: "application/x-www-form-urlencoded;charset=utf-8",
              data: {
                  validSeconds: 3600
              },
              dataType: "json",
              success: function (res) {
                  //返回的數(shù)據(jù)用data.d獲取內(nèi)容   
                  if (res.errcode == 0) {
                      sign = res.sign;
                      sdkid=res.sdkid;
                      initTcVod();
                  } else {
                      alert('上傳暫時無法使用。');
                  }
              },
              error: function (err) {
                      alert(err);
              }
          });
      }
      getsign();  //獲取一次簽名值
     function timetip(off) {
        var z = parseInt(off / 60, 10);
        var y = off % 60;
        var mtip='';
        var stip='';
        if(z==0&&y!=0){
          stip=y+'秒';
        } else if (z != 0 && y == 0) {
          mtip = z +'分鐘';
        } else if (z != 0 && y != 0) {
          mtip = z + '分';
          stip = y + '秒';
        }  
        return mtip+stip;
    }
//初始化騰訊上傳組件
      function initTcVod() {
          tcVod = new TcVod.default({getSignature: resign});
      }
//上傳視頻
            function vUpload(){
                  ws=0;
                  curbg.style.display='';
                  timer=window.setInterval(function(){ws++},1000);
                  var mediaFile = document.getElementById('file1').files[0];
                  var uploader = tcVod.upload({
                    mediaFile: mediaFile,mediaName:sdkid+mediaFile.name,
                  });
                  uploader.on('media_progress', function (info) {
                    fileobj.style.display='none';
                    document.getElementById('tip').innerHTML='已上傳'+ Math.round(info.percent*100)+'%(耗時'+timetip(ws)+')';
                    document.getElementById('ajax_uploadFiles_curprogress').style.width=(progressBarWidth*info.percent)+'px';
                  })
                  uploader.on('media_upload', function (info) {
                    window.clearInterval(timer);
                    document.getElementById('tip').innerHTML='上傳成功!';
                    執(zhí)行后續(xù)操作...
                    }else{
                    }
                  })
            }
  </script>

視頻演示

JS上傳視頻到騰訊云點播

小結(jié)

以上提供的代碼僅供參考,在實際的應(yīng)用中,服務(wù)端 API URL 程序還需要身份驗證或即時令牌訪問等安全機(jī)制。

另外騰訊云媒體上傳還提供了多種上傳方式的SDK,具體可參考網(wǎng)址:

https://cloud.tencent.com/document/product/266/9760

到此這篇關(guān)于C#結(jié)合JavaScript實現(xiàn)上傳視頻到騰訊云點播平臺的文章就介紹到這了,更多相關(guān)C#騰訊云點播平臺內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于WPF編寫一個串口轉(zhuǎn)UDP工具

    基于WPF編寫一個串口轉(zhuǎn)UDP工具

    串口是設(shè)備和上位機(jī)通信的常用接口,UDP則是網(wǎng)絡(luò)通信常用的通信協(xié)議,串口和UDP之間的相互轉(zhuǎn)換是非常有意義的。本文就利用WPF編寫一個串口轉(zhuǎn)UDP工具,需要的可以參考一下
    2023-04-04
  • Unity3D 計時器的實現(xiàn)代碼(三種寫法總結(jié))

    Unity3D 計時器的實現(xiàn)代碼(三種寫法總結(jié))

    這篇文章主要介紹了Unity3D 計時器的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 利用C#實現(xiàn)繪制出地球旋轉(zhuǎn)效果

    利用C#實現(xiàn)繪制出地球旋轉(zhuǎn)效果

    這篇文章主要為大家詳細(xì)介紹了如何利用C#語言實現(xiàn)繪制出地球旋轉(zhuǎn)的效果,文中的示例代碼講解詳細(xì),具有一定的參考價值,需要的可以了解一下
    2023-02-02
  • C# 多態(tài)性的深入理解

    C# 多態(tài)性的深入理解

    本篇文章是對C#中的多態(tài)性進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#中調(diào)用Servlet示例

    C#中調(diào)用Servlet示例

    這篇文章主要介紹了C#中調(diào)用Servlet示例,本文實現(xiàn)通用消息接口使用servlet作為服務(wù)器端服務(wù)接口,第三方應(yīng)用程序通過http post的方式調(diào)用servlet,實現(xiàn)與通用消息接口的調(diào)用連接,需要的朋友可以參考下
    2015-05-05
  • C# 腳本引擎RulesEngine的使用詳解

    C# 腳本引擎RulesEngine的使用詳解

    這篇文章主要介紹了C# 腳本引擎RulesEngine的使用方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-02-02
  • 解析C#彩色圖像灰度化算法的實現(xiàn)代碼詳解

    解析C#彩色圖像灰度化算法的實現(xiàn)代碼詳解

    本篇文章是對C#中彩色圖像灰度化算法的實現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#讀寫文本文件(.txt)的方法實例

    C#讀寫文本文件(.txt)的方法實例

    讀寫文本文件其實是件很簡單的事情,這篇文章主要給大家介紹了關(guān)于C#讀寫文本文件(.txt)的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • .Net WInform開發(fā)筆記(五)關(guān)于事件Event

    .Net WInform開發(fā)筆記(五)關(guān)于事件Event

    我前面幾篇博客中提到過.net中的事件與Windows事件的區(qū)別,本文討論的是前者,也就是我們代碼中經(jīng)常用到的Event,感興趣的朋友可以了解下
    2013-01-01
  • C#中const用法詳解

    C#中const用法詳解

    這篇文章主要介紹了C#中const用法,實例分析了C#中const的用法及使用技巧,并對比分析了readonly關(guān)鍵字與const關(guān)鍵字的不同,需要的朋友可以參考下
    2014-11-11

最新評論

曲沃县| 康马县| 攀枝花市| 紫阳县| 昭苏县| 无为县| 鹤庆县| 桦川县| 镇江市| 南充市| 平塘县| 黔江区| 晴隆县| 巴南区| 湖北省| 邹城市| 西青区| 墨玉县| 滨海县| 榆社县| 共和县| 阿克| 尼木县| 凤山县| 高唐县| 日照市| 宜章县| 安远县| 五家渠市| 颍上县| 英吉沙县| 马龙县| 含山县| 三江| 冀州市| 兴义市| 启东市| 师宗县| 高安市| 两当县| 九台市|