海康视频监控网页demo摄像头的demo程序怎么取出来数据流的

23:50 提问
从camera preview获取数据流问题求教!
本人android开发新人,以下是我为了从预览数据流抓取图片并存储而编写的代码。网上说“从camera读取到的预览(preview)图像流一定要输出到一个可见的(Visible)SurfaceView上,然后通过Camera.PreviewCallback的public void onPreviewFrame(byte[] data, Camera camera)函数来获得图像帧数据的拷贝。”那么显示在SurfaceView上的数据流还是完整的吧,不会出现预览停顿的现象吧?为什么我的程序运行之后,预览一闪而过,然后程序重启,如此反复三遍,报出进程意外停止呢?而且也没有保存到图像。这个程序会以什么频率保存图片啊?onPreviewFrame(byte[] data, Camera camera)是每一帧都保存吗?如何控制保存频率?
求大神细心讲解,在线求教!或者QQ:,隐身状态。拜谢!
package com.android.
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import java.io.OutputS
import java.util.I
import java.util.L
import java.util.UUID;
import android.app.A
import android.content.ContentV
import android.content.C
import android.content.res.C
import android.graphics.B
import android.pressF
import android.hardware.C
import android.hardware.Camera.CameraI
import android.hardware.Camera.PreviewC
import android.media.AudioM
import android.net.U
import android.os.B
import android.os.E
import android.os.H
import android.provider.MediaStore.Images.M
import android.util.L
import android.view.SurfaceH
import android.view.SurfaceHolder.C
import android.view.SurfaceV
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.TextV
import android.widget.T
public class SilentCameraActivity extends Activity
implements Camera.PreviewCallback, SurfaceHolder.Callback
SurfaceView mSurfaceV
SurfaceHolder mSurfaceH
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSurfaceView = (SurfaceView) this.findViewById(R.id.surfaceview);
mSurfaceHolder = mSurfaceView.getHolder();
mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceHolder.addCallback(this);
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
mCamera.stopPreview();
mCamera.release();
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
//打开前置摄像头
mCamera = Camera.open(CameraInfo.CAMERA_FACING_FRONT);
//开始预览
//设置哪个surfaceView显示图片
mCamera.setPreviewDisplay(mSurfaceHolder);
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();
//设置预览帧的接口,就是通过这个接口,我们来获得预览帧的数据的
mCamera.setPreviewCallback(SilentCameraActivity.this);
mCamera.startPreview();
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
mCamera.startPreview();
//拍照+退出
public void onPreviewFrame(byte[] data, Camera camera)
int w = camera.getParameters().getPreviewSize().
int h = camera.getParameters().getPreviewSize().
save(w,h,data);
static public void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {
final int frameSize = width *
for (int j = 0, yp = 0; j & j++) {
int uvp = frameSize + (j && 1) * width, u = 0, v = 0;
for (int i = 0; i & i++, yp++) {
int y = (0xff & ((int) yuv420sp[yp])) - 16;
if (y & 0) y = 0;
if ((i & 1) == 0) {
v = (0xff & yuv420sp[uvp++]) - 128;
u = (0xff & yuv420sp[uvp++]) - 128;
int y1192 = 1192 *
int r = (y1192 + 1634 * v);
int g = (y1192 - 833 * v - 400 * u);
int b = (y1192 + 2066 * u);
if (r & 0) r = 0; else if (r & 262143) r = 262143;
if (g & 0) g = 0; else if (g & 262143) g = 262143;
if (b & 0) b = 0; else if (b & 262143) b = 262143;
rgb[yp] = 0xff000000 | ((r && 6) & 0xff0000) | ((g && 2) & 0xff00) | ((b && 10) & 0xff);
public void save(int w,int h,byte[] data){
//预览编码为YUV420SP的视频流,需转换为RGB编码
int[] RGBData = new int[w* h];
byte[] mYUVData = new byte[data.length];
System.arraycopy(data,0, mYUVData, 0,data.length);
decodeYUV420SP(RGBData,mYUVData,w,h);
//图片保存到sdcard
final Bitmap bitmap = Bitmap.createBitmap(w,h, Bitmap.Config.ARGB_8888);
FileOutputStream outputStream = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + UUID.randomUUID() + ".png");
press(CompressFormat.PNG, 50, outputStream);
outputStream.close();
catch(Exception e)
e.printStackTrace();
按赞数排序
楼主请问你的视频流的数据可以获取的到吗?
请问楼主,上面的程序中 final Bitmap bitmap = Bitmap.createBitmap(w,h, Bitmap.Config.ARGB_8888); 在try{}块里, press(CompressFormat.PNG, 50, outputStream); 并没有保存图像的数据,请问该如何解决?
请问楼主,上面的程序中 final Bitmap bitmap = Bitmap.createBitmap(w,h, Bitmap.Config.ARGB_8888); 在try{}块里, press(CompressFormat.PNG, 50, outputStream); 并没有保存图像的数据,请问该如何解决?
请问楼主,上面的程序中 final Bitmap bitmap = Bitmap.createBitmap(w,h, Bitmap.Config.ARGB_8888); 在try{}块里, press(CompressFormat.PNG, 50, outputStream); 并没有保存图像的数据,请问该如何解决?
请问楼主,上面的程序中 final Bitmap bitmap = Bitmap.createBitmap(w,h, Bitmap.Config.ARGB_8888); 在try{}块里, press(CompressFormat.PNG, 50, outputStream); 并没有保存图像的数据,请问该如何解决?
我觉得大概是因为
FileOutputStream outputStream = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + UUID.randomUUID() + ".png");
这里是不是少了个“/”
Environment.getExternalStorageDirectory().getPath() +“/”+ UUID.randomUUID() + ".png"
文件目录是这个
其他相关推荐&>&Android 海康摄像头调用demo
Android 海康摄像头调用demo
上传大小:15.37MB
经过SDK更新后的demo,不会出现Jni Error,详见博客:http://blog.csdn.net/daijin888888/article/details/
综合评分:4.6(13位用户评分)
所需积分/C币:
下载个数:302
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有12条
再看看怎么样
下载不是完整包
不错,可以运行看到视频。值得学习借鉴
非常好用安卓6.0能运行,旧sdk是运行不了的,成功封装成appcan的插件使用了
设备无法连接呀
谢谢分享,但是为什么我运行后不显示图像呢,在logcat里显示 playSDK
Splitter i
非常好,谢谢分享
有一定的参考价值。
有一定的参考价值
从博客过来的,eclipse下的,很好用
审核通过送C币
gradle离线下载集合
创建者:zyq
微信商城专辑
创建者:velada
Android初学者
创建者:haicheng20
上传者其他资源上传者专辑
Android 使用ZBar扫描二维码源码实例
大话数据结构源代码
Ajax使用示例
Android使用ZBar扫描二维码/条形码(实例)【兼容Android5.0+平台】
Spring事务操作示例(四种方式)
移动开发热门标签
VIP会员动态
下载频道积分规则调整V1710.18
CSDN下载频道积分调整公告V1710.17
开通VIP,海量IT资源任性下载
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&VIP年卡&4000万程序员的必选
为了良好体验,不建议使用迅雷下载
Android 海康摄像头调用demo
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
全站300个资源免积分下载
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
全站300个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
全站300个资源免积分下载
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
daijin888888
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
Android 海康摄像头调用demoOpenCV+海康威视摄像头的实时读取
OpenCV+海康威视摄像头的实时读取
PC:i7-4970 16GB内存
摄像头型号:DS-2CD3310D-I(2.8mm)
windows-x64、vs2012、opencv2.4.8、hkvision5114-x64版本库
保证使用SADP工具可以识别摄像头,然后配置IP与电脑在同一个网段。
再保证可以从浏览器中访问。账号密码默认的一般是admin、a(老版本的摄像头密码是12345)。
登录成功后可能要求下载WebComponent控件,下载好了安装便是。如果仍然出现如下画面:
则换一种浏览器试。一般是默认浏览器没问题的。
配置使用sdk中自带的ClientDemo.exe工具可以访问
配置sdk开发环境
– opencv的配置
这里不展开讲opencv的配置,仅说明需要配置Z喎"/kf/ware/vc/" target="_blank" class="keylink">vcGVuY3a7t76zseTBv6GiyejWw7rDttTTprXEdnO/qreiu7e+s7XEyvTQ1MXk1sMgPGJyPgo8aW1nIHNyYz0="/uploadfile/Collfiles/16.jpg" alt="这里写图片描述" title="\">
– 海康威视sdk属性配置
因为是64位环境,为了增强属性配置的内聚性,单独添加新项目属性表,设置海康威视sdk的属性
依赖库写全,为:
HCNetSDK.PlayCtrl.ws2_32.winmm.GdiPlus.IPHlpApi.L%(AdditionalDependencies)
代码及说明
/*#include "PlayM4.h"*/
#include "global.h"
#include "readCamera.h"
#define USECOLOR 1
//--------------------------------------------
int iPicNum=0;//Set channel NO.
LONG nPort=-1;
HWND hWnd=NULL;
void yv12toYUV(char *outYuv, char *inYv12, int width, int height,int widthStep)
unsigned int Y,U,V;
//printf("widthStep=%d.\n",widthStep);
for (row=0; row< row++)
idx=row * widthS
int rowptr=row*
for (col=0; col>1;
tmp = (row/2)*(width/2)+(col/2);
if((row==1)&&( col>=1400 &&col (1200 * widthStep))
//printf("row * widthStep=%d,idx+col*3+2=%d.\n",1200 * widthStep,idx+col*3+2);
outYuv[idx+col*3]
outYuv[idx+col*3+1] = U;
outYuv[idx+col*3+2] = V;
//printf("col=%d,row=%d.\n",col,row);
//解码回调 视频为YUV数据(YV12),音频为PCM数据
void CALLBACK DecCBFun(long nPort,char * pBuf,long nSize,FRAME_INFO * pFrameInfo, long nReserved1,long nReserved2)
long lFrameType = pFrameInfo->nT
if(lFrameType ==T_YV12)
#if USECOLOR
//int start = clock();
static IplImage* pImgYCrCb = cvCreateImage(cvSize(pFrameInfo->nWidth,pFrameInfo->nHeight), 8, 3);//得到图像的Y分量
yv12toYUV(pImgYCrCb->imageData, pBuf, pFrameInfo->nWidth,pFrameInfo->nHeight,pImgYCrCb->widthStep);//得到全部RGB图像
static IplImage* pImg = cvCreateImage(cvSize(pFrameInfo->nWidth,pFrameInfo->nHeight), 8, 3);
cvCvtColor(pImgYCrCb,pImg,CV_YCrCb2RGB);
//int end = clock();
static IplImage* pImg = cvCreateImage(cvSize(pFrameInfo->nWidth,pFrameInfo->nHeight), 8, 1);
memcpy(pImg->imageData,pBuf,pFrameInfo->nWidth*pFrameInfo->nHeight);
//printf("%d\n",end-start);
Mat frametemp(pImg),
//frametemp.copyTo(frame);
cvShowImage("IPCamera",pImg);
cvWaitKey(1);
EnterCriticalSection(&g_cs_frameList);
g_frameList.push_back(frametemp);
LeaveCriticalSection(&g_cs_frameList);
#if USECOLOR
cvReleaseImage(&pImgYCrCb);
cvReleaseImage(&pImg);
/*cvReleaseImage(&pImg);*/
//此时是YV12格式的视频数据,保存在pBuf中,可以fwrite(pBuf,nSize,1,Videofile);
//fwrite(pBuf,nSize,1,fp);
/***************
else if (lFrameType ==T_AUDIO16)
//此时是音频数据,数据保存在pBuf中,可以fwrite(pBuf,nSize,1,Audiofile);
*******************/
///实时流回调
void CALLBACK fRealDataCallBack(LONG lRealHandle,DWORD dwDataType,BYTE *pBuffer,DWORD dwBufSize,void *pUser)
switch (dwDataType)
case NET_DVR_SYSHEAD:
if (!PlayM4_GetPort(&nPort)) //获取播放库未使用的通道号
if(dwBufSize > 0)
if (!PlayM4_OpenStream(nPort,pBuffer,dwBufSize,))
dRet=PlayM4_GetLastError(nPort);
//设置解码回调函数 只解码不显示
if (!PlayM4_SetDecCallBack(nPort,DecCBFun))
dRet=PlayM4_GetLastError(nPort);
//设置解码回调函数 解码且显示
//if (!PlayM4_SetDecCallBackEx(nPort,DecCBFun,NULL,NULL))
dRet=PlayM4_GetLastError(nPort);
//打开视频解码
if (!PlayM4_Play(nPort,hWnd))
dRet=PlayM4_GetLastError(nPort);
//打开音频解码, 需要码流是复合流
if (!PlayM4_PlaySound(nPort))
dRet=PlayM4_GetLastError(nPort);
case NET_DVR_STREAMDATA:
//码流数据
if (dwBufSize > 0 && nPort != -1)
BOOL inData=PlayM4_InputData(nPort,pBuffer,dwBufSize);
while (!inData)
Sleep(10);
inData=PlayM4_InputData(nPort,pBuffer,dwBufSize);
OutputDebugString(L"PlayM4_InputData failed \n");
void CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
char tempbuf[256] = {0};
switch(dwType)
case EXCEPTION_RECONNECT:
//预览时重连
printf("----------reconnect--------%d\n", time(NULL));
unsigned readCamera(void *param)
//---------------------------------------
NET_DVR_Init();
//设置连接时间与重连时间
NET_DVR_SetConnectTime(2000, 1);
NET_DVR_SetReconnect(10000, true);
//---------------------------------------
// 获取控制台窗口句柄
//HMODULE hKernel32 = GetModuleHandle((LPCWSTR)"kernel32");
//GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32,"GetConsoleWindow");
//---------------------------------------
// 注册设备
LONG lUserID;
NET_DVR_DEVICEINFO_V30 struDeviceI
lUserID = NET_DVR_Login_V30("192.168.2.64", 8000, "admin", "a", &struDeviceInfo);
if (lUserID < 0)
printf("Login error, %d\n", NET_DVR_GetLastError());
NET_DVR_Cleanup();
return -1;
//---------------------------------------
//设置异常消息回调函数
NET_DVR_SetExceptionCallBack_V30(0, NULL,g_ExceptionCallBack, NULL);
//cvNamedWindow("IPCamera");
//---------------------------------------
//启动预览并设置回调数据流
NET_DVR_CLIENTINFO ClientI
ClientInfo.lChannel = 1;
//Channel number 设备通道号
ClientInfo.hPlayWnd = NULL;
//窗口为空,设备SDK不解码只取流
ClientInfo.lLinkMode = 0;
//Main Stream
ClientInfo.sMultiCastIP = NULL;
LONG lRealPlayH
lRealPlayHandle = NET_DVR_RealPlay_V30(lUserID,&ClientInfo,fRealDataCallBack,NULL,TRUE);
if (lRealPlayHandle<0)
printf("NET_DVR_RealPlay_V30 failed! Error number: %d\n",NET_DVR_GetLastError());
//cvWaitKey(0);
Sleep(-1);
//fclose(fp);
//---------------------------------------
//关闭预览
if(!NET_DVR_StopRealPlay(lRealPlayHandle))
printf("NET_DVR_StopRealPlay error! Error number: %d\n",NET_DVR_GetLastError());
//注销用户
NET_DVR_Logout(lUserID);
NET_DVR_Cleanup();
其中最终得到的帧保存在g_frameList.push_back(frametemp);中。前后设置了对应的锁,用来对该帧序列的读写进行保护。这一部分内容是要自己完成的。即定义变量:
CRITICAL_SECTION g_cs_frameL
std::listg_frameL
主函数中的调用代码,先建立线程,调用上述读摄像头的函数的回调,并把读到的帧序列保存在g_frameList中,然后再读取该序列,保存到Mat里即可:
int main()
unsigned threadID;
Mat frame1;
InitializeCriticalSection(&g_cs_frameList);
hThread = (HANDLE)_beginthreadex( NULL, 0, &readCamera, NULL, 0, &threadID );
EnterCriticalSection(&g_cs_frameList);
if(g_frameList.size())
it = g_frameList.end();
Mat dbgframe = (*(it));
//imshow("frame from camera",dbgframe);
//dbgframe.copyTo(frame1);
//dbgframe.release();
(*g_frameList.begin()).copyTo(frame[i]);
g_frameList.pop_front();
g_frameList.clear(); // 丢掉旧的帧
LeaveCriticalSection(&g_cs_frameList);>> 海康摄像头DEMO二次开发
海康摄像头DEMO二次开发
所属分类:
下载地址:
实时预览示例代码一.ra文件大小:10.20 MB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
海康威视摄像头SDK,DEMO及源码,供开发者进行二次开发。
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
App.ico1.05 kB22-09-09 23:32
1.82 kB22-09-09 23:32
AudioIntercom.dll354.00 kB22-08-13 14:09
BMP_test.bmp7.91 MB01-04-14 14:34
DsSdk.dll5.03 MB05-03-12 15:40
gdiplus.dll1.57 MB05-03-12 15:40
HCNetSDK.dll2.32 MB15-01-14 14:33
OpenAL32.dll417.00 kB09-07-13 08:28
PlayCtrl.dll1.33 MB19-11-13 14:13
PreviewDemo.exe228.00 kB01-04-14 14:34
PreviewDemo.vshost.exe11.34 kB07-05-14 14:44
PreviewDemo.vshost.exe.manifest490.00 B18-06-13 20:28
QosControl.dll60.07 kB05-03-12 15:40
Record_test.mp42.50 MB01-04-14 14:41
StreamTransClient.dll256.10 kB19-11-13 14:13
SystemTransform.dll204.11 kB15-01-14 14:32
791.16 kB04-03-14 11:25
DesignTimeResolveAssemblyReferences.cache789.00 B01-04-14 12:03
DesignTimeResolveAssemblyReferencesInput.cache5.47 kB01-04-14 14:34
2.03 kB07-05-14 14:44
PreviewDemo.csproj.GenerateResource.Cache776.00 B01-04-14 12:11
PreviewDemo.csprojResolveAssemblyReference.cache1.20 kB26-03-14 14:23
PreviewDemo.exe228.00 kB01-04-14 14:34
PreviewDemo.Preview.resources180.00 B01-04-14 12:11
24.95 kB01-04-14 14:32
Preview.resx5.68 kB01-04-14 12:11
PreviewDemo.csproj4.35 kB26-03-14 14:23
PreviewDemo.csproj.user2.07 kB24-11-11 09:30
1.07 kB29-06-13 14:50
Settings.settings233.00 B29-06-13 14:50
PreviewDemo.sln918.00 B24-11-11 09:30
PreviewDemo.suo20.00 kB07-05-14 16:21
PreviewDemo.v12.suo41.00 kB27-03-14 10:20
&TempPE&0.00 B01-04-14 12:03
&TempPE&0.00 B31-03-14 09:55
&Debug&0.00 B01-04-14 12:03
&Release&0.00 B01-04-14 14:34
&bin&0.00 B01-04-14 14:38
&obj&0.00 B01-04-14 12:03
&Properties&0.00 B26-03-14 14:05
&PreviewDemo&0.00 B26-03-14 14:06
&实时预览示例代码一&0.00 B26-03-14 14:06
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
delphiboy比较复杂,看起来不错,刚开始学习,值得研究。
yangjie_admin这是哪什么语言开发的
tmy有备注,便于阅读!
tmy有备注,便于阅读!
kevinwumh对我的开发帮助很大,谢谢分享!
评价成功,多谢!
下载实时预览示例代码一.ra
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:68.161ms - init:0.1;find:0.6;t:0.4;tags:0.3;related:29.3;comment:6.0; 27.69
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 海康 video demo.js 的文章

 

随机推荐