Delphi Can
Hikvision IP Kameradan Görüntü Alma - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Hikvision IP Kameradan Görüntü Alma (/showthread.php?tid=7832)



Hikvision IP Kameradan Görüntü Alma - erdogan - 11-08-2024

Merhaba,

Hikvision marka IP Kameradan Görüntü Almak istiyorum, aşağıdaki konuda paylaşılmış fakat bir çözüm üretemedim,

Alıntı:https://www.delphican.com/showthread.php?tid=6035&highlight=Hikvision



TRichView component ile çözmek istedim fakat desteklemediğini belirttiler,

rtsp://192.168.1.64:554/Streaming/Channels/101/ 

rtsp://admin:123456@192.168.1.64:554/Streaming/Channels/101/

bir kaç yol denesem de bir türlü çözmedim konu hakkında bilgisi olan paylaşırsa minnettar olacağım.

teşekkürler.


Cvp: Hikvision IP Kameradan Görüntü Alma - erdogan - 11-08-2024

Merhaba,

eklemeyi unutmuşum, bir kaynak buldum fakat dll olmasına rağmen dll hatası veriyor 


Alıntı:https://github.com/theprogrammer67/HikvisionDelphi

teşekkürler

aşağıdaki örnek ile deniyorum,

aldığım hata : HTTP/1.1 404 Not Found

(32 bit dll dosyalar : https://www.hikvision.com/tr/support/tools/hitools/cle2ea65555bdb1ce1/ )

unit Unit1;

interface

uses
 Winapi.Windows,  IdHTTP, Winapi.Messages, System.SysUtils, System.Variants,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
 IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, System.Classes ;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Image1: TImage;
   IdHTTP1: TIdHTTP;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;



 type
 LPNET_DVR_DEVICEINFO_V30 = ^NET_DVR_DEVICEINFO_V30;

 NET_DVR_DEVICEINFO_V30 = Record
   sSerialNumber: array [0 .. 47] of BYTE;
   byAlarmInPortNum: BYTE;
   byAlarmOutPortNum: BYTE;
   byDiskNum: BYTE;
   byDVRType: BYTE;
   byChanNum: BYTE;
   byStartChan: BYTE;
   byAudioChanNum: BYTE;
   byIPChanNum: BYTE;
   byZeroChanNum: BYTE;
   byMainProto: BYTE;
   bySubProto: BYTE;
   bySupport: BYTE;
   bySupport1: BYTE;
   byRes1: BYTE;
   wDevType: Word;
   byRes2: array [0 .. 15] of BYTE;
 end;
 

var
 Form1: TForm1;
 ErrorValues: LongWord;
 lUserID: LONG;
 struDeviceInfo: NET_DVR_DEVICEINFO_V30;
 DVRIP, DVRUserName, DVRPassWord: AnsiString;


function NET_DVR_Init(): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Init';

function NET_DVR_Cleanup(): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Cleanup';

function NET_DVR_SetConnectTime(dwWaitTime, dwTryTimes: DWORD): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_SetConnectTime';

function NET_DVR_SetReconnect(dwInterval: DWORD; bEnableRecon: boolean): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_SetReconnect';

function NET_DVR_GetLastError(): LongWord; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_GetLastError';

function NET_DVR_Login_V30(sDVRIP: PAnsiChar; wDVRPort: Word; sUserName: PAnsiChar; sPassword: PAnsiChar; lpDeviceInfo: LPNET_DVR_DEVICEINFO_V30): LONG; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Login_V30';

function NET_DVR_Logout_V30(lUserID: LONG): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Logout_V30';


implementation

{$R *.dfm}
  uses
System.NetEncoding,    Vcl.Graphics ;


procedure TForm1.Button1Click(Sender: TObject);
var
 ResponseContent: TMemoryStream;
 AuthHeader: string;
 IdHTTP1: TIdHTTP;
begin
 DVRIP := '192.168.1.64';
 DVRUserName := 'admin';
 DVRPassWord := 'A*?1OET1?';
 NET_DVR_Init();
 NET_DVR_SetConnectTime(2000, 1);
 NET_DVR_SetReconnect(10000, true);
 lUserID := NET_DVR_Login_V30(PAnsiChar(DVRIP), 8000, PAnsiChar(DVRUserName),
 PAnsiChar(DVRPassWord), @struDeviceInfo);
 if lUserID >= 0 then
 begin
   Memo1.Lines.Add('Login Success, lUserID: ' + IntToStr(lUserID));
   IdHTTP1 := TIdHTTP.Create(nil);
   ResponseContent := TMemoryStream.Create;
   try
     // IP kameradan görüntüyü al
     IdHTTP1.Request.Username := DVRUserName;
     IdHTTP1.Request.Password := DVRPassWord;
     IdHTTP1.Get('http://' + DVRIP + '/snapshot.jpg', ResponseContent);
     // TImage bileşenine yükle
     ResponseContent.Position := 0;
     Image1.Picture.LoadFromStream(ResponseContent);
   except
     on E: Exception do
       ShowMessage('Hata: ' + E.Message);
   end;
   ResponseContent.Free;
   IdHTTP1.Free;
 end
 else
 begin
   ErrorValues := NET_DVR_GetLastError();
   Memo1.Lines.Add('Login Failed, Error: ' + IntToStr(ErrorValues));
 end;
 NET_DVR_Logout_V30(lUserID);
 NET_DVR_Cleanup();
   {  DVRIP := '192.168.1.64';
 DVRUserName := 'admin';
 DVRPassWord := '1234';

 NET_DVR_Init();

 NET_DVR_SetConnectTime(2000, 1);
 NET_DVR_SetReconnect(10000, true);


 lUserID := NET_DVR_Login_V30(PAnsiChar(DVRIP), 8000, PAnsiChar(DVRUserName),
 PAnsiChar(DVRPassWord), @struDeviceInfo);


 Memo1.Lines.Add('lUserID:' + inttostr(lUserID));

 ErrorValues := NET_DVR_GetLastError();
 Memo1.Lines.Add('ErrorValues:' + inttostr(ErrorValues));

 NET_DVR_Logout_V30(lUserID);
 NET_DVR_Cleanup(); }

end;

end.



çözüldü Cvp: Hikvision IP Kameradan Görüntü Alma - erdogan - 11-08-2024

Merhaba,


ekte çözülmüş hali var, 32bit ile derleyip üretici sitesinden sdk indirip dll ile derlerseniz çalışacaktır.

https://www.hikvision.com/tr/support/tools/hitools/cle2ea65555bdb1ce1/


Hikvision IP Kameradan Görüntü Alma - engerex - 12-08-2024

merhaba,
RSTP ile SDK ihtiyacı ortadan kalkıyor. Araştırınca forumda çözüldüğünü gördüm.

https://www.delphican.com/showthread.php?tid=1262


Cvp: Hikvision IP Kameradan Görüntü Alma - remember - 24-09-2024

(11-08-2024, Saat: 21:21)erdogan Adlı Kullanıcıdan Alıntı: Sorunu çözebildiniz mi

Merhaba,

eklemeyi unutmuşum, bir kaynak buldum fakat dll olmasına rağmen dll hatası veriyor 


Alıntı:https://github.com/theprogrammer67/HikvisionDelphi

teşekkürler

aşağıdaki örnek ile deniyorum,

aldığım hata : HTTP/1.1 404 Not Found

(32 bit dll dosyalar : https://www.hikvision.com/tr/support/tools/hitools/cle2ea65555bdb1ce1/ )

unit Unit1;

interface

uses
 Winapi.Windows,  IdHTTP, Winapi.Messages, System.SysUtils, System.Variants,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
 IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, System.Classes ;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Image1: TImage;
   IdHTTP1: TIdHTTP;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;



 type
 LPNET_DVR_DEVICEINFO_V30 = ^NET_DVR_DEVICEINFO_V30;

 NET_DVR_DEVICEINFO_V30 = Record
   sSerialNumber: array [0 .. 47] of BYTE;
   byAlarmInPortNum: BYTE;
   byAlarmOutPortNum: BYTE;
   byDiskNum: BYTE;
   byDVRType: BYTE;
   byChanNum: BYTE;
   byStartChan: BYTE;
   byAudioChanNum: BYTE;
   byIPChanNum: BYTE;
   byZeroChanNum: BYTE;
   byMainProto: BYTE;
   bySubProto: BYTE;
   bySupport: BYTE;
   bySupport1: BYTE;
   byRes1: BYTE;
   wDevType: Word;
   byRes2: array [0 .. 15] of BYTE;
 end;
 

var
 Form1: TForm1;
 ErrorValues: LongWord;
 lUserID: LONG;
 struDeviceInfo: NET_DVR_DEVICEINFO_V30;
 DVRIP, DVRUserName, DVRPassWord: AnsiString;


function NET_DVR_Init(): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Init';

function NET_DVR_Cleanup(): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Cleanup';

function NET_DVR_SetConnectTime(dwWaitTime, dwTryTimes: DWORD): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_SetConnectTime';

function NET_DVR_SetReconnect(dwInterval: DWORD; bEnableRecon: boolean): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_SetReconnect';

function NET_DVR_GetLastError(): LongWord; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_GetLastError';

function NET_DVR_Login_V30(sDVRIP: PAnsiChar; wDVRPort: Word; sUserName: PAnsiChar; sPassword: PAnsiChar; lpDeviceInfo: LPNET_DVR_DEVICEINFO_V30): LONG; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Login_V30';

function NET_DVR_Logout_V30(lUserID: LONG): boolean; stdcall; external 'HCNetSDK.dll' name 'NET_DVR_Logout_V30';


implementation

{$R *.dfm}
  uses
System.NetEncoding,    Vcl.Graphics ;


procedure TForm1.Button1Click(Sender: TObject);
var
 ResponseContent: TMemoryStream;
 AuthHeader: string;
 IdHTTP1: TIdHTTP;
begin
 DVRIP := '192.168.1.64';
 DVRUserName := 'admin';
 DVRPassWord := 'A*?1OET1?';
 NET_DVR_Init();
 NET_DVR_SetConnectTime(2000, 1);
 NET_DVR_SetReconnect(10000, true);
 lUserID := NET_DVR_Login_V30(PAnsiChar(DVRIP), 8000, PAnsiChar(DVRUserName),
 PAnsiChar(DVRPassWord), @struDeviceInfo);
 if lUserID >= 0 then
 begin
   Memo1.Lines.Add('Login Success, lUserID: ' + IntToStr(lUserID));
   IdHTTP1 := TIdHTTP.Create(nil);
   ResponseContent := TMemoryStream.Create;
   try
     // IP kameradan görüntüyü al
     IdHTTP1.Request.Username := DVRUserName;
     IdHTTP1.Request.Password := DVRPassWord;
     IdHTTP1.Get('http://' + DVRIP + '/snapshot.jpg', ResponseContent);
     // TImage bileşenine yükle
     ResponseContent.Position := 0;
     Image1.Picture.LoadFromStream(ResponseContent);
   except
     on E: Exception do
       ShowMessage('Hata: ' + E.Message);
   end;
   ResponseContent.Free;
   IdHTTP1.Free;
 end
 else
 begin
   ErrorValues := NET_DVR_GetLastError();
   Memo1.Lines.Add('Login Failed, Error: ' + IntToStr(ErrorValues));
 end;
 NET_DVR_Logout_V30(lUserID);
 NET_DVR_Cleanup();
   {  DVRIP := '192.168.1.64';
 DVRUserName := 'admin';
 DVRPassWord := '1234';

 NET_DVR_Init();

 NET_DVR_SetConnectTime(2000, 1);
 NET_DVR_SetReconnect(10000, true);


 lUserID := NET_DVR_Login_V30(PAnsiChar(DVRIP), 8000, PAnsiChar(DVRUserName),
 PAnsiChar(DVRPassWord), @struDeviceInfo);


 Memo1.Lines.Add('lUserID:' + inttostr(lUserID));

 ErrorValues := NET_DVR_GetLastError();
 Memo1.Lines.Add('ErrorValues:' + inttostr(ErrorValues));

 NET_DVR_Logout_V30(lUserID);
 NET_DVR_Cleanup(); }

end;

end.



Hikvision IP Kameradan Görüntü Alma - sadikacar60 - 08-10-2024

HOCAM BEN bu konularda artik uzmanlastim bu forumda onlarca yardim aldim ilk defa tam anlamiyla yardimci olabilecegim bir konu cikti.
size sorunun cozumunu anlatayim dilerseniz uzaktanda yardimci olurum.

ben kamera ile goruntu analizi yapiyorum . kucuk bir programim var
ilk onceleri kameralarin sdk sini ocx. dosyalarini programa install edip onun uzerinden goruntu aliyordum.
bu durumun soyle bir problemi var ilerde ayni kameradan veya ayni ocx kullanan kameralardan bulamazsaniz programiniz cokuyor.
gecen ay bu sorunu yasadim satin aldigim kamera modeli piyasada bitmis.

https://www.videolan.org/index.tr.html vlcplayer indiriyorsun bilgisayarina kuruyorsun.
sonra paslivlcplayer kompenanti var onu IDE programina kuruyorsun.
sonra internet explorer larda kameranin goruntusunu acmaya calisiyorsun zaten gerekli dosyalari bu arada bilgisayarina yuklenmek zorunda.
bir arkadasin onerisiyle avant browser kullaniyorum kamera goruntusu almada sorun yasamiyorum.

kamera goruntusu aldiktan sonra kameranin rtsp:// kodunu buluyorsun hangi kodu yazdiginda goruntu alabildigini bulman onemli
rtsp:// kodunu bulduktan sonra programinda paslibvlcplayer da bu kodla kamerani acip goruntu alabiliyorsun.
resim vb kayit islemleri yapabiliyorsun.
saygilar

Not: ONVIF device maneger diye bir program var ben rtsp:// kodunu bulmakta zorlandim sonra bu programi kurcalarken bunda buldum.