1、android 阿里雲短視頻上傳,混淆代碼是什麼?
是否集成了第三方SDK,查看是否是其它SDk混淆導致的。
關於代碼混淆注意事項
摘要:若使用studio新建項目,會自動生成混淆的相關文件,已經入過很多坑,有幾點需注意。1.作為library的mole,不可進行混淆,否則其他mole無法引用,因為會找不到其中被混淆的類,可在主mole中配置混淆.2.注意項目中的bean,尤其是實現Serializable介面的類,在用bundle傳輸時會出現的問題,必須keep其變數:keepclassmembersclass*implementsjava.io.Serializable{*;}3.一定要keep
若使用studio新建項目,會自動生成混淆的相關文件,已經入過很多坑,有幾點需注意。
1.作為library的mole,不可進行混淆,否則其他mole無法引用,因為會找不到其中被混淆的類,可在主mole中配置混淆.
2.注意項目中的bean,尤其是實現 Serializable介面的類,在用bundle傳輸時會出現的問題,必須keep其變數:keepclassmembers class * implements java.io.Serializable {*;}
3.一定要keep安卓的主要組件類名,如activity,service等等。
Keep public class * extends android.app.activity
4.一定keep第三方類庫中的所有東東
Keep class com.baidu.**{*;}
5.注意keep Gson,json,R文件,介面,用到 js 調用時注意webview。
2、html5如何調用手機攝像頭,實現拍照,拍視頻實現上傳功能
html5提供了 navigator.getUserMedia介面使用設備攝像頭,chrome28上測試已經可用,手機端瀏覽器測試發現只有opera瀏覽器可用。
瀏覽器未完善之前可以使用PhoneGap完成,它提供了 navigator.camera.getPicture介面,使用js可以方便調用設備攝像頭。
3、網站調用攝像頭實現視頻功能代碼誰有?
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx=" http://www.adobe.com/2006/mxml" height="588" width="901" layout="absolute" creationComplete="connect2FMS()"> <mx:Script> <![CDATA[ import mx.controls.Alert; /** ***此文件屬於兩個swf文件中的一個,用來定義伺服器端 ***用來執行後台服務: ***First:配准圖片以確定是否已經發生異常而決定是否錄像 ***Second:發布公共視頻流到FMS伺服器 以供各個客戶端訪問 */ //定義必須欄位 private var conn:NetConnection = new NetConnection(); //此連接連向FMS伺服器 //原始點陣圖數據 即正常情況下的點陣圖數據 用來當作以後圖片配準的模板 在應用程序啟動時寫入 private var originalBmpData:BitmapData = null ; private var sobelBmpDataOfOriginal:BitmapData = null ; //經過sobel運算後的點陣圖數據 private var sobelBytes:ByteArray = null; private var recordTimer:Timer = new Timer(500,0); //1分鍾調用一次處理方法 然後添加監聽器 /** ***連接FMS伺服器 */ private function connect2FMS():void { //注意:在AS3.0中默認的ObjectEncoding為AMF3,但是FMS不支持AMF3,所以 //要顯示的聲明為AMF0 conn.objectEncoding = ObjectEncoding.AMF0 ; //連接FMS所在的伺服器IP 協議為rtmp協議 example為FMS的application實例 conn.connect("rtmp://127.0.0.1/example") ; //利用connectSuccessful偵聽連接事件 conn.addEventListener(NetStatusEvent.NET_STATUS,connectSuccessful) ; } //定義connectSuccessful方法所需要的一些變數 private var publicStream:NetStream = null ; //公共視頻流 用來不間斷的給客戶端實時監控用 private var recordStream:NetStream = null ; //錄像視頻流 用來檢測是否有異常 特徵:可以間斷 private var timeStr:String = null ; //定義時間字元串 private function connectSuccessful(e:NetStatusEvent):void { var result:String = e.info.code ; switch(result) { case "NetConnection.Connect.Success": video.attachCamera(Camera.getCamera()) ; //video為DisplayVideo對象 publicStream = new NetStream(conn) ; publicStream.attachAudio(Microphone.getMicrophone()) ; publicStream.attachCamera(Camera.getCamera()) ; //發布公共視頻流到FMS 視頻流名字為publicStream 並設置為實時live publicStream.publish("publicStream","live") ; recordStream = new NetStream(conn) ; recordStream.attachAudio(Microphone.getMicrophone()) ; recordStream.attachCamera(Camera.getCamera()) ; timeStr = new Date().getTime().toString() ; //播放時間標志位的視頻 recordStream.publish(timeStr,"live") ; //用來暫時播放時間標志位視頻 //sobelBmpDataOfOriginal = this.computeGray(originalBmpData); //sobelBytes = sobelBmpDataOfOriginal.getPixels(new Rectangle(0,0,sobelBmpDataOfOriginal.width,sobelBmpDataOfOriginal.height)); //sobelBytes = originalBmpData.getPixels(new Rectangle(0,0,sobelBmpDataOfOriginal.width,sobelBmpDataOfOriginal.height)); //監聽recordStream停止錄像 開始錄像等事件的發生 recordStream.addEventListener(NetStatusEvent.NET_STATUS,recordStreamHandler) ; break; case "NetStream.Play.StreamNotFound": Alert.show("相應的視頻流沒有找到") ; break; default : Alert.show("發生未知錯誤,請重新啟動應用程序") ; break ; } } /** ***停止錄像 */ private function stopRecord():void { //關閉錄像流 recordStream.close(); } /** ***開始錄像 */ private function record():void { //對相應標志時間位的階段進行錄像 recordStream.publish(timeStr,"record"); } /** ***recordStream事件監聽處理器 ***如果檢測到停止錄像事件發生 則繼續監測視頻流的變化 */ private function recordStreamHandler(e:NetStatusEvent):void { var s:String = e.info.code ; switch(s) { case "NetStream.Record.Stop" : //recordStream = new NetStream(conn) ; //recordStream.attachAudio(Microphone.getMicrophone()) ; //recordStream.attachCamera(Camera.getCamera()) ; //獲得下個時間標志位 並按照此標志位進行播放 timeStr = new Date().getTime().toString() ; recordStream.publish(timeStr,"live") ; isRecording = false;//應該在這里設置isRecording //Alert.show("停止錄象"); //this.sendData();//還要去處這段注釋TOMCAT啟動以後 timeCounter = 0; break ; } } /** ***截取攝像頭的視頻幀圖像 轉換為點陣圖數據 */ private function takeAPhoto():BitmapData { var bmpData:BitmapData = new BitmapData(video.width,video.height,true,0) ; bmpData.draw(video) ; return bmpData; } /** ***計算指定圖像的灰度值 */ private function computeGray(bmpData:BitmapData):ByteArray { var bytes:ByteArray = new ByteArray(); var temp:ByteArray = bmpData.getPixels(new Rectangle(0,0,bmpData.width,bmpData.height)); for(var counter:uint = 0; counter < temp.length; counter++) { var r:uint = this.getR(temp[counter]); var g:uint = this.getG(temp[counter]); var b:uint = this.getB(temp[counter]); var gray:Number = 0.3*r + 0.59*g + 0.11*b; bytes[counter] = Math.round(gray); } return bytes; } /** ***圖像配准程序 參數1:原始圖像點陣圖數據 參數2:拍照的點陣圖數據 */ private var isRecording:Boolean = false; private var timeCounter:uint = 0; private var isComputing:Boolean = false; private function adjustImage(e:TimerEvent):void { if(isComputing == false) { var balsa:uint = this.getBalsa(); if(isRecording == true) { isComputing = false; //假設錄像10s if(timeCounter < 20) { timeCounter++; } else { this.stopRecord(); } } else { //Alert.show("剛近來開始照相"); isComputing = true; var tempBmpData:BitmapData = new BitmapData(video.width,video.height); tempBmpData.draw(video); //這里的閥值要改 var isRecord:Boolean = this.subImage(tempBmpData,balsa); isComputing = false; //Alert.show("isRecord=="+isRecord); if(isRecord == true) { //Alert.show("開始錄象"); this.record();//如果符合要求 則進行錄像 this.sendData(); isRecording = true; } } } else { //這里沒問題 //Alert.show("正在計算"); } } /** ***獲得閥值 */ private function getBalsa():uint { return split.value; } /** ***兩幅圖像相減 參數1:拍攝圖像 參數2:給定的閥值 返回:是否需要錄像 */ private function subImage(temp:BitmapData,balsa:uint):Boolean { //返回拍攝圖像經過sobel運算後的結果 var tempBytes:ByteArray = this.computeGray(temp); i2.source = new Bitmap(temp); for(var counter:uint;counter < tempBytes.length; counter++) { var n:Number = Math.abs(Number(sobelBytes[counter] - tempBytes[counter])); if(n > Number(balsa)) { return true; } } return false; } /** ***以下三個方法分別獲得像素點的R G B值 */ private function getB(pixel:uint):uint { return pixel & 0XFF ; } private function getG(pixel:uint):uint { return pixel >> 8 & 0XFF ; } private function getR(pixel:uint):uint { return pixel >> 16 & 0XFF ; } /** ***發送數據到資料庫 */ private function sendData():void { var data:Object = new Object(); data.time = timeStr; data.oper = "put"; request.useProxy = false; request.send(data); } /** 啟動按牛 */ private function qidong():void { //用來復位原始圖像 不相關的物體和人員最好離開 以免發生匹配錯誤 originalBmpData = new BitmapData(video.width,video.height); originalBmpData.draw(video); sobelBytes = this.computeGray(originalBmpData); i1.source = new Bitmap(originalBmpData); recordTimer.addEventListener(TimerEvent.TIMER,adjustImage); recordTimer.start(); } ]]> </mx:Script> <mx:HTTPService id="request" url="http://localhost:8080/bs/record" /> <mx:Panel x="10" y="10" width="881" height="568" layout="absolute" fontSize="19" color="#00ffff" fontWeight="bold" fontFamily="Courier New" borderColor="#8080c0" themeColor="#000040" cornerRadius="15" alpha="1.0" backgroundColor="#c0c0c0" backgroundAlpha="0.89"> <mx:Canvas x="10" y="10" width="588" height="498"> <mx:VideoDisplay x="0" y="0" width="588" height="458" id="video"/> <mx:Label x="10" y="470" text="調節閥值"/> <mx:HSlider x="103" y="470" width="324" snapInterval="1" id="split" minimum="0" maximum="15" value="8" change="getBalsa()"/> <mx:Button x="435" y="466" label="啟動" click="qidong()"/> </mx:Canvas> <mx:Image x="606" y="35" width="245" height="218" id="i1"/> <mx:Image x="606" y="287" width="245" height="221" id="i2"/> <mx:Label x="606" y="10" text="模板圖像,不合格繼續啟動"/> <mx:Label x="606" y="261" text="測試匹配圖像是否正常" width="245"/> </mx:Panel> </mx:Application> 這是Server端
4、大神們,請問如果要在web中用C#實現調用攝像頭驅動錄制視頻該怎麼做呢?網上的資料全是窗體版的
VB視頻壓縮和處理通過調用只有那些具有C或C + +編寫動態鏈接回庫。
href="http://www.vbgood.com" target="_blank"> www.vbgood.com 上下載一個動態鏈接庫mpegcompress.dll,捕獲的瞬答間視頻可以被壓縮成MPEG2視頻。但只是在尋找沒有找到,你可以去谷歌搜索就可以了,寫的外國人工具。
但是使用它,它是不是像WIN API的ActiveX DLL需要申報,申報的功能介面,因此,在按照它的文檔必須使用。你下載到的地方一般應該有英文說明。
5、求救html5 視頻調用方法
直接調用swf不是挺好嗎?你的意識是,就要視頻內容,不要他們的播放器?然後還不想自己存儲?這樣的話,你可以試試七牛存儲。
6、怎麼在java web項目實現視頻錄制功能
ava web實現視頻的基本很少,能完整運行的基本沒有.視頻錄制只能使用flash,所以你搜一搜java falsh還是能搜到一些的
7、html調用手機端攝像頭拍攝的視頻上傳,為什麼沒有臨時文件
說說你是怎麼拍攝的,用flash?還是canvas?如果是canvas拍照的圖,拍的是canvas對象,要將canvas轉為圖像格式上傳
8、高手,用javascript代碼調用一個本地視頻,讓這個視頻在網頁中全屏播放,如何寫代碼啊
使用這個,注意路徑中不要使用中文
<object id="player" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" style="width: 682px; height: 371px">
<param NAME="AutoStart" VALUE="-1">
<!--是否自動播放-->
<param NAME="Balance" VALUE="0">
<!--調整左右聲道平衡,同上面舊播放器代碼-->
<param name="enabled" value="-1">
<!--播放器是否可人為控制-->
<param NAME="EnableContextMenu" VALUE="-1">
<!--是否啟用上下文菜單-->
<param NAME="url" VALUE="D:\aa.flv">
<!--播放的文件地址-->
<param NAME="PlayCount" VALUE="1
<!--播放次數控制,為整數-->
<param name="rate" value="1">
<!--播放速率控制,1為正常,允許小數,1.0-2.0-->
<param name="currentPosition" value="0">
<!--控制項設置:當前位置-->
<param name="currentMarker" value="0">
<!--控制項設置:當前標記-->
<param name="defaultFrame" value="">
<!--顯示默認框架-->
<param name="invokeURLs" value="0">
<!--腳本命令設置:是否調用URL-->
<param name="baseURL" value="">
<!--腳本命令設置:被調用的URL-->
<param name="stretchToFit" value="0">
<!--是否按比例伸展-->
<param name="volume" value="50">
<!--默認聲音大小0%-100%,50則為50%-->
<param name="mute" value="0">
<!--是否靜音-->
<param name="uiMode" value="Full">
<!--播放器顯示模式:Full顯示全部;mini最簡化;None不顯示播放控制,只顯示視頻窗口;invisible全部不顯示-->
<param name="windowlessVideo" value="0">
<!--如果是0可以允許全屏,否則只能在窗口中查看-->
<param name="fullScreen" value="0">
<!--開始播放是否自動全屏-->
<param name="enableErrorDialogs" value="-1">
<!--是否啟用錯誤提示報告-->
<param name="SAMIStyle" value>
<!--SAMI樣式-->
<param name="SAMILang" value>
<!--SAMI語言-->
<param name="SAMIFilename" value>
<!--字幕ID-->
</object>
9、html5調用本地攝像頭播放視頻但是瀏覽器報錯如下 請問這個應該怎麼解決
video.src = stream;改成video.srcObject = stream;