Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Hikvision IP Kameradan Görüntü Alma
#1
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...=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.
Cevapla
#2
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/too...55bdb1ce1/ )

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.
Cevapla
#3
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/too...55bdb1ce1/
Cevapla
#4
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
Cevapla
#5
(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/too...55bdb1ce1/ )

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.
Cengiz ÖĞREN
Cevapla
#6
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.
Ekmeğimi yazılımdan kazanmıyorum kendi halimde bir şeyler yapıyorum. 49 yaşında emekliyim.
İğne sokmadan yardımcı olacaksan başımın üstünde yerin var.

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  ip kameradan gelen resimde jpeg error #53 hatasi sadikacar60 5 225 01-10-2024, Saat: 08:08
Son Yorum: mrmarman
  IEC 61850 Potokolünden veri alma shooterman 7 1.047 25-06-2024, Saat: 12:08
Son Yorum: shooterman
  kap.org.tr veri alma hk. pro_imaj 6 4.570 21-05-2024, Saat: 21:19
Son Yorum: hakanduran
  Problem - ZKTeco Cihazlardan Anlık Veri Alma mad85 16 9.095 25-12-2023, Saat: 11:35
Son Yorum: osiso
  [ÇÖZÜLDÜ]Firebase Bearer Token Alma shooterman 8 2.437 05-12-2023, Saat: 12:17
Son Yorum: shooterman



Konuyu Okuyanlar: 1 Ziyaretçi