官網:超酷網頁視頻
本篇介紹:插件播放視頻, 添加插件(額外的功能), 視頻格式之間的轉換
PC端一般都是利用插件(Flash)來播放視頻,可以支持很多格式。網上很多說這個插件的,這里只是做個記錄。
下載好,移動到我們的項目,開始測試。因為里面的功能有點多,你可以去看文檔完成自己需要的需求,這里只是簡單的記錄。
我們PC一般會存放FLV格式視頻,而MP4則使用與很多場景。 FLV體積小,速度快這也是為什么網站都選選擇使用這個格式。
最簡單的版本:
微信內置網頁中用這種方式在Android里面是可以播放FLV和Mp4格式。
<div id="a1"></div> <%--視頻的位子--%> <script src="jquery-1.11.2.min.js"></script> <script src="ckplayer/ckplayer.js"></script> <%--插件JS--%> <script type="text/javascript"> //初始化視頻容器 initCKPlayer('a1', '/Video/1_0.mp4', '/ckplayer/ckplayer.swf'); //初始化視頻播放器需配合ckplayer.js使用 function initCKPlayer(boxId, videoSrc, playerSrc) { var flashvars = { f: videoSrc, c: 0 }; var video = [videoSrc]; CKobject.embed(playerSrc, boxId, 'video_v1', '600', '400', true, flashvars, video); //false表示插件,true表示HTML標簽播放,如果不是video所支持的類型不會顯示 } </script>
常用對象屬性。
f:'http://movie.ks.js.cn/flv/2011/11/8-1.flv',//視頻地址 a:'',//調用時的參數,只有當s>0的時候有效 s:'0',//調用方式,0=普通方法(f=視頻地址),1=網址形式,2=xml形式,3=swf形式(s>0時f=網址,配合a來完成對地址的組裝) c:'0',//是否讀取文本配置,0不是,1是 x:'',//調用xml風格路徑,為空的話將使用ckplayer.js的配置 i:'',//初始圖片地址 d:'http://www.ckplayer.com/temp/11.jpg',//暫停時播放的廣告,swf/圖片 u:'http://www.baidu.com',//暫停時如果是圖片的話,加個鏈接地址 l:'http://www.ckplayer.com/down/start.swf',//視頻開始前播放的廣告,swf/圖片/視頻 r:'',//視頻開始前播放圖片/視頻時加一個鏈接地址 t:'1',//視頻開始前播放swf/圖片時的時間 e:'3',//視頻結束后的動作,0是調用js函數,1是循環播放,2是暫停播放,3是調用視頻推薦列表的插件 v:'85',//默認音量,0-100之間 p:'1',//視頻默認0是暫停,1是播放 h:'1',//播放http視頻流時采用何種拖動方法,0是按關鍵幀,1是按關鍵時間點 q:'',//視頻流拖動時參考函數,默認是start m:'0',//默認是否采用點擊播放按鈕后再加載視頻,0不是,1是,設置成1時不要有前置廣告 g:'',//視頻直接g秒開始播放 j:'',//視頻提前j秒結束 k:'10|40|80',//提示點時間,如 30|60鼠標經過進度欄30秒,60秒會提示n指定的相應的文字 n:'跳過開頭|小企鵝寶寶下水了|跳過結尾',//提示點文字,跟k配合使用,如 提示點1|提示點2 b:'0x000',//播放器的背景色,如果不設置的話將默認透明 w:'',//指定調用自己配置的文本文件,不指定將默認調用和播放器同名的txt文件 //調用播放器的所有參數列表結束 //以下為自定義的播放器參數用來在插件里引用的 my_title:'視頻標題',//視頻標題 my_url:'http://www.ckplayer.com/index.php',//本頁面地址 my_summary:'這是一個測試頁面',//視頻介紹,請保持在一行文字,不要換行 my_pic:'http://www.ckplayer.com/temp/11.jpg'//分享的圖片地址 //調用自定義播放器參數結束
因為剛下的 里面的一些參數是他定義的,你需要改變播放頁面的一些設置可以去修改他的js代碼,每一個參數都有說明,仔細閱讀就好了。
注:如果想要設置頁面上的位子,需要去改 style.swf里面的style.xml里面的一些格式,詳情,去看官網。 比如:刪除設置按鈕
插件的調用
下載好插件,
①把 style.swf 改成zip的格式
②把你下載好的.swf添加到 style.zip里面,然后把后綴名改回來。
③ 打開你的ckplayer.js 把插件代碼加入
④添加參數,還是在js里面
⑤初始化,清空cookie瀏覽
var flashvars = { f: videoSrc, a: '', deft: '標清,高清,超清,', //配置文件里有,則不需要再設置 deff: '/Video/1_0.mp4?t=1|/Video/1_0.mp4?t=2|/Video/1_0.mp4?t=3', //后面注意帶參數 c: 0
}
效果:
注:你可以在案例的網站里面把他的案例代碼扣出來,照着文檔來寫,把案例里面的代碼復制出來。
格式轉化 -->轉 FLV
官網:查看
之前也說了,PC端存FLV格式,當然需要把格式轉成FLV格式的。 這個進程還可以視頻截圖,很對的用法執行網上搜索。
這里需要一個程序(進程),FFMPEG。
定義: 可以將一種視頻格式(包括封轉格式和編碼格式)轉換為另一種視頻格式。轉碼器在視音頻編解碼處理的程序中,屬於一個比較復雜的東西。因為它結合了視頻的解碼和編碼。一個視頻播放器,一般只包含解碼功能;一個視頻編碼工具,一般只包含編碼功能;而一個視頻轉碼器,則需要先對視頻進行解碼,然后再對視頻進行編碼,因而相當於解碼器和編碼器的結合。
①下載 FFMPEG.exe
②轉化方法,第一個參數是你需要轉換視頻的路徑(傳的值是服務器的路徑),第二個參數是一個格式為 flv的視頻(已存在,需要自己准備一個)。根據自己修改也可以改成絕對地址。
這個方法是活的,你只用把最最后的那段啟動程序的代碼保留,其余的自己寫。
#region 視頻格式轉為Flv /// <summary> /// 視頻格式轉為Flv /// </summary> /// <param name="vFileName">原視頻文件地址</param> /// <param name="ExportName">生成后的Flv文件地址</param> public bool ConvertFlv(string vFileName, string ExportName) { string ffmpegtool = Server.MapPath("~/Flv/ffmpeg.exe"); //你的ffmpeg.exe絕對路徑 if ((!System.IO.File.Exists(ffmpegtool)) || (!System.IO.File.Exists(Server.MapPath(vFileName)))) { return false; }
//可以添加一個flv格式的視頻做模板,每次用的時候把視頻Copy到另一個文件夾去轉換,這里沒有這樣寫,可以自己修改 vFileName = Server.MapPath(vFileName); ExportName = Server.MapPath(ExportName); //別的格式轉flv格式 命令 string Command = " -i \"" + vFileName + "\" -y -ab 32 -ar 22050 -b 800000 -s 480*360 \"" + ExportName + "\""; //Flv格式 //轉mp4格式 flv->mp4成功 不能用video播放,可以用播放器使用 string aa3 = $"-i {vFileName} -y -b 1024k -acodec copy -f mp4 {ExportName}"; System.Diagnostics.Process p = new System.Diagnostics.Process(); //利用Pocess啟動應用程序 p.StartInfo.FileName = ffmpegtool; //地址 p.StartInfo.Arguments = Command;//命名行 p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = false; p.Start(); p.BeginErrorReadLine(); p.WaitForExit(); p.Close(); p.Dispose(); return true; } #endregion
③傳遞參數,這是根據你的上面的方法來進行傳值,注意路徑
protected async void Button1_Click(object sender, EventArgs e) {
Stopwatch sw = new Stopwatch(); await Task.Run(() => { HttpPostedFile hf = Request.Files["FileUpload1"]; string path = Path.Combine(Server.MapPath("~/Upload/"), hf.FileName); hf.SaveAs(path); if (ConvertFlv("~/Upload/" + hf.FileName, "~/Upload2/Test.flv")) { Response.Write("成功:" + sw.ElapsedMilliseconds / 1000.0 + " s"); } else { Response.Write("失敗"); } }); }
這樣就可以了。
//參數說明 FFMPEG /* * -i filename(input) 源文件目錄 * -y 輸出新文件,是否強制覆蓋已有文件 * -c 指定編碼器 * -fs limit_size(outinput) 設置文件大小的限制,以字節表示的。沒有進一步的字節塊被寫入后,超過極限。輸出文件的大小略大於所請求的文件大小。 * -s 視頻比例 4:3 320x240/640x480/800x600 16:9 1280x720 ,默認值 'wxh',和原視頻大小相同 * -vframes number(output) 將視頻幀的數量設置為輸出。別名:-frames:v * -dframes number (output) 將數據幀的數量設置為輸出.別名:-frames:d * -frames[:stream_specifier] framecount (output,per-stream) 停止寫入流之后幀數幀。 * -bsf[:stream_specifier] bitstream_filters (output,per-stream) 指定輸出文件流格式, 例如輸出h264編碼的MP4文件:ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264 * -r 29.97 楨速率(可以改,確認非標准楨率會導致音畫不同步,所以只能設定為15或者29.97) * */
轉MP4格式
找了好多文章都沒有說怎么解決這個問題,就在服務器上解決吧。
上傳了視頻可設置審核,然后在服務器上安裝一個轉換視頻的軟件,手動進行轉換。