لوحة تشفير الفيديو، بروتوكول TCP JSON، دليل RTSP API

RTSP عنوان دفق الصوت والفيديو في الوقت الحقيقي:

  • شكل: rtsp://الملكية الفكرية:رقم المنفذ/الدفق
  • المنفذ الافتراضي: 554
  • معرف الدفق: 0 (التيار الرئيسي), 1 (تيار ثانوي)
  • فمثلا, لاسترداد الدفق الفرعي من عنوان الجهاز 192.168.1.188, عنوان URL هو:
  • rtsp://192.168.1.1 8 8 :554 / 1

العميل (تطبيق الجوال) يحصل على معلمات الكاميرا ويضبطها عبر بروتوكول TCP;

تعمل الكاميرا كخادم TCP, مع وجود منفذ TCP الافتراضي 8866.

تنسيق بيانات اتصال TCP:

سلسلة JSON نقية

الحصول على حالة الكاميرا:

بنية البيانات:

              بنية typedef

              {

                     شار s8DevId[64]; // معرف الجهاز, الافتراضي هو IP إذا لم يتم تعيين معرف.

                     u32 u32TfRecord; // حالة تسجيل بطاقة TF, 0: لا يوجد تسجيل; 1: التسجيل قيد التقدم

              }JSON_DEV_STATUS_INFO_S;

أحرف الأمر:

              #تعريف JS_CMD_GET_DEV_STATUS “GetDevStatus”

بافتراض أن عنوان IP الخاص بالجهاز هو 192.168.1.188, يرسل العميل بيانات JSON التالية:

{

         ” GetDevStatus “: {       }

}

بعد أن تلقت الكاميرا البيانات بنجاح, قامت بإرجاع بيانات JSON التالية:

{

         ” GetDevStatus “: {

         ” s8DevId ” : ” 192.168.1.188 ” ,

         “ u32TfRecord ” : 0

         }

}

الحصول على/إعداد معلمة ترميز الفيديو:

بنية البيانات:

              بنية typedef

              {

u8 u8VideoEncChn;        //0 : التيار الرئيسي; 1: تيار ثانوي;

u8 u8VideoCodecType;    // 1:h264 ; 2:ص265

u16 u16VideoWidth;              // عرض الفيديو

u16 u16VideoHeight;       // ارتفاع الفيديو

u16 u8FrameRate;           // معدل الإطار (1-30)

u16 u8IframeInterval;      // أنا- حجم الفاصل الزمني للإطار (1-100)

u8 u8BitrateControlMode; //وضع التحكم في معدل البت: 0: CBR 1: VBR

u16 u16BitRateKps;         // حجم معدل البت

شار s8VideoSizeName[256]; // قائمة القرارات المدعومة }JSON_VIDEO_ENC_PARAM_S;

أحرف الأمر:

              الحصول على المعلمات:

              #تعريف JS_CMD_GET_VIDEO_ENC_PARAM “getVideoEncParam”

              تحديد المعلمات:

              #تعريف JS_CMD_SET_VIDEO_ENC_PARAM “setVideoEncParam”

فمثلا:

يسترد العميل بيانات JSON التالية التي تحتوي على معلمات التشفير الخاصة بتدفق البت الرئيسي للكاميرا:

{

         ” getVideoEncParam “: {

         ” u8VideoEncChn “: 0

         }

}

بيانات JSON التي يتم إرجاعها بواسطة الكاميرا هي كما يلي;

{

         ” getVideoEncParam “: {

         ” u8VideoEncChn “: 0,

         " u8VideoCodecType " : 1,

         " u16VideoWidth " : 3840,

       ” u16VideoHeight ” : 1080,

       "u8FrameRate" : 30,

         ” u8IframeInterval ” : 60,

         ” u8BitrateControlMode ” : 0,

         " u16BitRateKps " : 4096,

       ” s8VideoSizeName ” : ” 3840×1080,1920×540 “

         }

}

يقوم العميل بتعيين معدل إطار البث الثانوي للكاميرا على 15 ومعدل البت إلى 1024 كيلو بايت بتنسيق JSON, على النحو التالي:

{

         ” setVideoEncParam “: {

         ” u8VideoEncChn “: 1,

         ” u8FrameRate “: 15,

         ” u16BitRateKps “: 1024

         }

}

بعد الإعداد الناجح, ترجع الكاميرا TRUE.

الحصول على/إعداد معلمة ترميز الصوت:

بنية البيانات:

              بنية typedef

              {

       u8 u8تمكين;             //0: إبطال; 1: يُمكَِن;

       u32 u32ChnNum; // 1 : مونو; 2: ستيريو

   u8 u8EncodeType; //6 : AAC; 8: G711A; 9: G711U;                        u32 u32SampleRate; // معدل أخذ العينات: 8000, 16000, 24000, 32000, 48000

       u8 u8AoutVolume; // حجم الصوت: [0–100]                    }JSON_VIDEO_ENC_PARAM_S;

أحرف الأمر:

              الحصول على المعلمات:

              #تعريف JS_CMD_GET_AUDIO_PARAM “getAudioParam”

              تحديد المعلمات:

              #تعريف JS_CMD_SET_AUDIO_PARAM “setAudioParam”

فمثلا:

يسترد العميل بيانات JSON التالية لمعلمات تشفير صوت الكاميرا:

{

         ” getAudioParam “: { }

}

بيانات JSON التي يتم إرجاعها بواسطة الكاميرا هي كما يلي;

{

         ” getAudioParam “: {

         ” u8Enable “: 1,

         " u32ChnNum " : 1,

         " u8EncodeType " : 8,

       " u32SampleRate " : 8000,

       " u8AoutVolume " : 80,

                  }

}

الإعدادات من جانب العميل لترميز صوت الكاميرا هي AAC, ستيريو, ومعدل أخذ العينات 48 كيلو هرتز. بيانات JSON هي كما يلي:

{

         ” setAudioParam “: {

         " u32ChnNum " : 2,

         " u8EncodeType " : 6,

       " u32SampleRate " : 48000

                  }

}

بعد الإعداد الناجح, ترجع الكاميرا TRUE.

الحصول على/إعداد معلمة صورة الفيديو:

بنية البيانات:

بنية typedef

{

u8 u8VideoIspChn;           //قناة مزود خدمة الإنترنت; [0-4]

u8 u8 السطوع;              // سطوع: [0~100]

u8 u8 التباين;                 // نسبة التباين: [0~100]

u8 u8Hue;                        // اللونية: [0~100]

u8 u8التشبع;              // مستوى التشبع: [0~100]

u8 u8الحدة;                     // حدة: [0~100]

}JSON_IMAGE_PARAM_S;

أحرف الأمر:

              الحصول على المعلمات:

              #تعريف JS_CMD_GET_IMAGE_PARAM “getImageParam”

              تحديد المعلمات:

              #تعريف JS_CMD_SET_IMAGE_PARAM “setImageParam”

فمثلا:

يسترد العميل بيانات JSON التالية لمعلمات الصورة للقناة 0 من مزود خدمة الإنترنت للكاميرا:

{

         ” getImageParam “: {

                   “ u8VideoIspChn ” : 0

         }

}

بيانات JSON التي يتم إرجاعها بواسطة الكاميرا هي كما يلي;

{

         ” getImageParam “: {

         ” u8VideoIspChn “: 0,

         " u8 السطوع " : 50,

         " u8التباين " : 50,

       "u8Hue" : 50,

       "u8التشبع" : 50,

         " u8 الحدة " : 50

                  }

}

إعداد بيانات JSON من جانب العميل لسطوع الكاميرا هو 53, التباين هو 60, والتشبع هو 56 على النحو التالي:

{

         ” setImageParam “: {

         “ u8VideoIspChn ” : 0,

         " u8 السطوع " : 53,

       " u8التباين " : 60,

       "u8التشبع" : 56

                  }

}

بعد الإعداد الناجح, ترجع الكاميرا TRUE.

استرجاع معلومات بطاقة TF;

بنية البيانات:

بنية typedef

{

      u32 u32 الحجم الإجمالي;             // الحجم الإجمالي بالميجابايت

      u32 u32UsedSize;             // وحدة القدرة المستخدمة (MB)

      u32 u32 الحجم المتاح;             // السعة المتاحة بالميجابايت

}JSON_SD_CARD_INFO_S;

الحصول على المعلمات:

#تعريف JS_CMD_GET_SD_CARD_INFO “getSdCardInfo”

فمثلا:

يسترد العميل بيانات JSON التالية فيما يتعلق بمعلومات بطاقة TF الخاصة بالكاميرا:

{

         ” getSdCardInfo “: { }

}

بيانات JSON التي يتم إرجاعها بواسطة الكاميرا هي كما يلي;

{

         ” getSdCardInfo “: {

         ” u32TotalSize “: 31254,

         " u32 الحجم المستخدم " : 20000,

         ” u32AvailableSize ” : 11254

                  }

}

تكوين تسجيل بطاقة TF:

بنية البيانات:

بنية typedef

{

       u8 u8AutoRecordEnable;        //1: تمكين التسجيل; 0: تعطيل التسجيل

      u8 u8RecordStrChn;                // اختيار دفق التسجيل: 0: الدفق الأساسي; 1: تيار ثانوي

   u8 u8PreRecordSeconds;               // وقت التسجيل المسبق [0-10] في ثواني

   u16 u16RecordSecondsPerFile; // مدة ملف تسجيل واحد [10-1000] ثواني

}JSON_RECORD_CONTROL_PARAM_S;

الحصول على المعلمات:

#حدد JS_CMD_GET_RECORD_CONTROL_PARAM “getRecordControlParam”

تحديد المعلمات:

#تعريف JS_CMD_SET_RECORD_CONTROL_PARAM “setRecordControlParam”

فمثلا:

يسترد العميل بيانات JSON التالية فيما يتعلق بتكوين تسجيل بطاقة TF الخاصة بالكاميرا:

{

         ” getRecordControlParam “: { }

}

بيانات JSON التي يتم إرجاعها بواسطة الكاميرا هي كما يلي;

{

         ” getRecordControlParam “: {

                   ” u8AutoRecordEnable “: 1,

                   " u8RecordStrChn " : 0,

                   ” u8PrecordSeconds ” : 0,

              ” u16RecordSecondsPerFile ” : 300

                  }

}

تكوين IP للشبكة السلكية:

بنية البيانات:

بنية typedef

{                                               

u8 u8DhcpEnable;                  // 0: رقم تعريف حاسوب ثابت; 1: DHCP;

شار s8IP[16];                          //عنوان IP

شار s8SubMask[16];              // قناع الشبكة الفرعية

شار s8GateWay[16];              // بوابة IP

شار s8Dns[16];                //عنوان DNS

}JSON_NET_PARAM_S;

الحصول على المعلمات:

#تعريف JS_CMD_GET_NET_IP_PARAM “getNetIpParam”

تحديد المعلمات:

#تعريف JS_CMD_SET_NET_IP_PARAM “setNetIpParam”

فمثلا:

يسترد العميل معلومات IP الخاصة بالكاميرا باستخدام بيانات JSON على النحو التالي:

{

         ” getNetIpParam “: { }

}

بيانات JSON التي يتم إرجاعها بواسطة الكاميرا هي كما يلي;

{

         ” getNetIpParam “: {

                   ” u8DhcpEnable “: 0,

                   ” s8IP ” : ” 192.168.1.188 ” ,

                   ” s8SubMask ” : ” 255.255.255.0 ” ,

              ” s8GateWay ” : ” 192.168.1.1 ” ,

              ” s8Dns ” : ” 192.168.1.1 “

         }

}

تم تكوين العميل بعنوان IP الخاص بالكاميرا كـ 192.168.3.10, البوابة كما 192.168.3.1, وDNS كما 192.168.3.1. بيانات JSON هي كما يلي:

{

         ” setNetIpParam “: {

                   ” s8IP ” : ” 192.168.3.10 ” ,

              ” s8GateWay ” : ” 192.168.3.1 ” ,

              ” s8Dns ” : ” 192.168.3.1 “

         }

}

بعد الإعداد الناجح, الكاميرا لا تقوم بإرجاع أي بيانات, ويحتاج العميل إلى إعادة الاتصال بالجهاز باستخدام عنوان IP الجديد.

تكوين معلمة WiFi:

يسترد العميل/التطبيق قائمة بمعرفات SSID الخاصة بأجهزة التوجيه التي يعثر عليها الجهاز.

                  {

                            “getAPSsidList” :{ }

                  }

                  سيقوم الجهاز بإرجاع قائمة بمعرفات SSID: حدد مسار SSID من القائمة للاتصال به.

                  قم بتكوين شبكة Wi-Fi بجهازك للعمل في وضع STA:

         {

                  “setWifiSsidParam”:{

                           “u8Mode”: 0,

                           “s8Ss”: ” yrsx8888 “,

                            “s8PassWd”: “987545598400

                  }

    }

              قم بتكوين شبكة Wi-Fi الخاصة بالجهاز للعمل في وضع نقطة الاتصال AP:

                  {

                            “setWifiSsidParam”:{

                                    “u8Mode”: 1

                            }

                  }

                  احصل على حالة Wi-Fi للجهاز:

                  {

                            “getWifiSsidParam” : { }

                  }

مزامنة الوقت:

بنية البيانات:    

                  بنية typedef

                  {

                            u8 u8TimeZone;                        // قيمة المنطقة الزمنية RT_TIMEZONE_E

                            شار s8DateTime[64];              // تنسيق الوقت: “2019-06-12_12:56:59_3”    

                  }JSON_DATE_TIME_INFO_S;

                  تعريف قيمة المنطقة الزمنية:

تعداد typedef

{

RT_TIMEZONE_InternationalDateLineWest = 0, /* التوقيت العالمي المنسق-12:00 */

RT_TIMEZONE_MidwayIslandساموا = 1, /* التوقيت العالمي المنسق-11:00 */

RT_TIMEZONE_هاواي = 2, /* التوقيت العالمي المنسق-10:00 */

RT_TIMEZONE_ألاسكا = 3, /* التوقيت العالمي المنسق-9:00 */

RT_TIMEZONE_تيجوانا كاليفورنيا = 4, /* التوقيت العالمي المنسق-8:00 */

RT_TIMEZONE_PacificTimeUSCanada = 5, /* التوقيت العالمي المنسق-8:00 */

RT_TIMEZONE_MountainTimeUSCanada = 6, /* التوقيت العالمي المنسق-7:00 */

RT_TIMEZONE_تشيهواهوالاباز مازاتلان = 7, /* التوقيت العالمي المنسق-7:00 */

RT_TIMEZONE_أريزونا = 8, /* التوقيت العالمي المنسق-7:00 */

RT_TIMEZONE_ساسكاتشوان = 9, /* التوقيت العالمي المنسق-7:00 */

RT_TIMEZONE_GuaddlajaraMexicoCityMonterrey = 10, /* التوقيت العالمي المنسق-6:00 */

RT_TIMEZONE_CentralTimeUSCanada = 11, /* التوقيت العالمي المنسق-6:00 */

RT_TIMEZONE_CentralAmerica = 12, /* التوقيت العالمي المنسق-6:00 */

RT_TIMEZONE_BogotaLimaQuito = 13, /* التوقيت العالمي المنسق-5:00 */

RT_TIMEZONE_EasternTimeUSCanada = 14, /* التوقيت العالمي المنسق-5:00 */

RT_TIMEZONE_IndianaEast = 15, /* التوقيت العالمي المنسق-5:00 */

RT_TIMEZONE_كراكاس = 16, /* التوقيت العالمي المنسق-4:30 */

RT_TIMEZONE_AtlanticTimeCanada = 17, /* التوقيت العالمي المنسق-4:00 */

RT_TIMEZONE_GeorgetownLapazSanJuan = 18, /* التوقيت العالمي المنسق-4:00 */

RT_TIMEZONE_سانتياغو = 19, /* التوقيت العالمي المنسق-4:00 */

RT_TIMEZONE_NenfoundLand = 20, /* التوقيت العالمي-3:30 */

RT_TIMEZONE_برازيليا = 21, /* التوقيت العالمي-3:00 */

RT_TIMEZONE_بوينس آيرس جورجنتاون = 22, /* التوقيت العالمي-3:00 */

RT_TIMEZONE_جرينلاند = 23, /* التوقيت العالمي-3:00 */

RT_TIMEZONE_MidAtlantic = 24, /* التوقيت العالمي المنسق-2:00 */

RT_TIMEZONE_CapeVerdeIs = 25, /* التوقيت العالمي المنسق-1:00 (جمهورية الرأس الأخضر) */

RT_TIMEZONE_جزر الأزور = 26, /* التوقيت العالمي المنسق-1:00 (جزر الأزور) */

RT_TIMEZONE_GreenwichMeanTimeDublinEdinburghLisbonLondon = 27, /* التوقيت العالمي-0:00 */

RT_TIMEZONE_الدار البيضاء = 28, /* التوقيت العالمي-0:00 */

RT_TIMEZONE_مونروفيا = 29, /* التوقيت العالمي-0:00 */

RT_TIMEZONE_أمستردام، برلين، بيرن، روما، ستوكهولم، فيينا = 30, /* التوقيت العالمي المنسق+1:00 */

RT_TIMEZONE_Belgradeبراتيسلافابودابستليوبليانابراغ = 31, /* التوقيت العالمي المنسق+1:00 */

RT_TIMEZONE_بروكسلكوبنهاجنمدريدباريس = 32, /* التوقيت العالمي المنسق+1:00 */

RT_TIMEZONE_SarajevoSkopjeWarsawZagreb = 33, /* التوقيت العالمي المنسق+1:00 */

RT_TIMEZONE_WestCentralAfrica = 34, /* التوقيت العالمي المنسق+1:00 */

RT_TIMEZONE_Rareبريتوريا = 35, /* التوقيت العالمي المنسق+2:00 */

RT_TIMEZONE_هلسنكيKyivRigaSofiaTallinnفيلنيوس = 36, /* التوقيت العالمي المنسق+2:00 */

RT_TIMEZONE_القاهرة = 37, /* التوقيت العالمي المنسق+2:00 */

RT_TIMEZONE_مينسك = 38, /* التوقيت العالمي المنسق+2:00 */

RT_TIMEZONE_أثينا، بوخارست، اسطنبول = 39, /* التوقيت العالمي المنسق+2:00 */

RT_TIMEZONE_القدس = 40, /* التوقيت العالمي المنسق+2:00 */

RT_TIMEZONE_بغداد = 41, /* التوقيت العالمي المنسق+3:00 */

RT_TIMEZONE_Tbilisi = 42, /* التوقيت العالمي المنسق+3:00 */

RT_TIMEZONE_KuwaitRiyadh = 43, /* التوقيت العالمي المنسق+3:00 */

RT_TIMEZONE_موسكوسانت بطرسبرجفولجوجراد = 44, /* التوقيت العالمي المنسق+3:00 */

RT_TIMEZONE_نيروبي = 45, /* التوقيت العالمي المنسق+3:00 */

RT_TIMEZONE_طهران = 46, /* التوقيت العالمي المنسق+3:30 */

RT_TIMEZONE_AbuDhabiمسقط = 47, /* التوقيت العالمي المنسق+4:00 */

RT_TIMEZONE_باكويريفان = 48, /* التوقيت العالمي المنسق+4:00 */

RT_TIMEZONE_كابول = 49, /* التوقيت العالمي المنسق+4:30 */

RT_TIMEZONE_طشقند = 50, /* التوقيت العالمي المنسق+5:00 */

RT_TIMEZONE_إيكاترينبرج = 51, /* التوقيت العالمي المنسق+5:00 */

RT_TIMEZONE_إسلام آباد كراتشي = 52, /* التوقيت العالمي المنسق+5:00 */

RT_TIMEZONE_تشينايكولكاتامومباينيودلهي = 53, /* التوقيت العالمي المنسق+5:30 */

RT_TIMEZONE_كاتماندو = 54, /* التوقيت العالمي المنسق+5:45 */

RT_TIMEZONE_ألماتينوفوسيبيرسك = 55, /* التوقيت العالمي المنسق+6:00 */

RT_TIMEZONE_أستانادكا = 56, /* التوقيت العالمي المنسق+6:00 */

RT_TIMEZONE_رانجون = 57, /* التوقيت العالمي المنسق+6:30 */

RT_TIMEZONE_كراسنويارسك = 58, /* التوقيت العالمي المنسق+7:00 */

RT_TIMEZONE_بانكوك، هانوي، جاكرتا = 59, /* التوقيت العالمي المنسق+7:00 */

RT_TIMEZONE_BeijingChongqingHongKongUrumqi = 60, /* التوقيت العالمي المنسق+8:00 */

RT_TIMEZONE_كوالالمبورسنغافورة = 61, /* التوقيت العالمي المنسق+8:00 */

RT_TIMEZONE_بيرث = 62, /* التوقيت العالمي المنسق+8:00 */

RT_TIMEZONE_تايبيه = 63, /* التوقيت العالمي المنسق+8:00 */

RT_TIMEZONE_ايركوتسكأولانباتار = 64, /* التوقيت العالمي المنسق+8:00 */

RT_TIMEZONE_أوساكا، سابورو طوكيو = 65, /* التوقيت العالمي المنسق+9:00 */

RT_TIMEZONE_سيول = 66, /* التوقيت العالمي المنسق+9:00 */

RT_TIMEZONE_ياكوتسك = 67, /* التوقيت العالمي المنسق+9:00 */

RT_TIMEZONE_أديلايد = 68, /* التوقيت العالمي المنسق+9:30 */

RT_TIMEZONE_بريسبان = 69, /* التوقيت العالمي المنسق+10:00 */

RT_TIMEZONE_فلاديفوستوك = 70, /* التوقيت العالمي المنسق+10:00 */

RT_TIMEZONE_GuamMoresby = 71, /* التوقيت العالمي المنسق+10:00 */

RT_TIMEZONE_هوبارت = 72, /* التوقيت العالمي المنسق+10:00 */

RT_TIMEZONE_CanberraMelbourneSydney = 73, /* التوقيت العالمي المنسق+10:00 */

RT_TIMEZONE_MagadanSolomonNewCaledonia = 74, /* التوقيت العالمي +11:00 */

RT_TIMEZONE_أوكلاند ولينغتون = 75, /* التوقيت العالمي المنسق+12:00 */

RT_TIMEZONE_FijiKamchatkaMarshallIs = 76, /* التوقيت العالمي المنسق+12:00 */

RT_TIMEZONE_نوكوالوفا = 77, /* التوقيت العالمي المنسق+13:00 */

RT_TIMEZONE_BUTT

}RT_TIMEZONE_E;

الحصول على المعلمات:

#حدد JS_CMD_GET_DEV_DATE_TIME “GetDevDateTime”

تحديد المعلمات:

#حدد JS_CMD_SET_DEV_DATE_TIME “setDevDateTime”

احصل على بيانات JSON لوقت الجهاز :

                  {

                            ” GetDevDateTime ” : {}

                  }

يقوم الجهاز بإرجاع بيانات JSON:

                  {

                            ” GetDevDateTime ” : {

                            "u8TimeZone" : 60,

                            “s8DateTime” : “2020-03-06_12:56:59_3”

                            }

                  }

تقوم بيانات JSON بتعيين وقت الجهاز إلى الخميس, مارس 12, 2020, في 3:38:30 مساء:

                  {

                            ” setDevDateTime ” : {

                                     “s8DateTime” : “2020-03-12_15:38:30_4”

                            }

                  }

عاد الجهاز TRUE بعد الإعداد الناجح.

إدارة المعدات:

بيانات JSON لإعادة تشغيل الجهاز:

                            {

                                     ” setSysControlParam ” : {

                                               "u8Restart" : 1               

                                     }

                            }

بيانات JSON لاستعادة إعدادات المصنع:

                            {

                                     ” setSysControlParam ” : {

                                               "u8ResetDefault" : 1              

                                     }

                            }

تنسيق بيانات بطاقة SD JSON:

                            {

                                     ” setSysControlParam ” : {

                                               "u8FormatSdCard" : 1                              

                                     }

                            }

التحكم بتز:

بنية البيانات:

بنية typedef

{

       u8 u8Cmd;                        // رمز الأمر PTZ_CONTROL_CODE

u8 u8 السرعة;                     // سرعة (1-64)

u8 u8Data1;                            // محجوز; سيتم استخدام هذا في المواقف المحددة مسبقًا.

u8 u8Data2;                            // محجوز, سيتم استخدام هذا لأوامر PTZ الخاصة.

}JSON_PTZ_CONTROL_S;

تعداد PTZ_CONTROL_CODE

{

              PTZ_STOP = 0, // توقف

              PTZ_UP=1,          // فوق

              PTZ_DOWN=2,          // تحت

              PTZ_LEFT=3,              // اليسار

              PTZ_RIGHT=4,           // حق

              PTZ_LEFT_UP=5, // أعلى اليسار

              PTZ_LEFT_DOWN=6, // أسفل اليسار

              PTZ_RIGHT_UP=7, // أعلى اليمين

              PTZ_RIGHT_DOWN=8, // 8 : أسفل اليمين

              PTZ_ZOOM_IN=9, // 9 : تكبير

              PTZ_ZOOM_OUT=10, // 10: التكبير = 10, // 10 : التكبير = 10

              PTZ_FOCUS_NEAR=11, // 11 : التركيز على القريب

              PTZ_FOCUS_FAR=12, // 12 : التركيز على البعيد

              PTZ_IRIS_ADD=13, // 13 : زيادة الفتحة

              PTZ_IRIS_REDUCE=14, // 14 : تم تقليل الفتحة

              PTZ_GOTO_POINT = 15, // 15 : استدعاء بت مسبقا

              PTZ_CLEAR_POINT = 16, // 16 : مسح بت مسبقا

              PTZ_PERSET_POINT = 17, // 17 : تعيين بت مسبقا

              PTZ_AUTO_RUN = 18, // 18 : المسح التلقائي الأفقي

};

التحكم بتز:

#تعريف JS_CMD_PTZ_CONTROL “PtzControlCmd”

أوامر JSON التي تسيطر عليها Ptz:

  • التحرك إلى الأسفل بسرعة 30:

{

         ” PtzControlCmd “: {

         ” u8Cmd “: 2,

         ” u8Speed ” : 30

                  }

}

  • 1. ضبط موضع محدد مسبقًا 2:

{

         ” PtzControlCmd “: {

         ” u8Cmd “: 17,

         " u8Speed ​​" : 30,   

         " u8Data1 " : 2

                  }

}

البحث عن ملف بطاقة TF:

( 1) الأمر بالبحث عن جميع ملفات الفيديو خلال فترة زمنية محددة في نفس اليوم:

{

                  “searchRecordFileList”:{

                            “u32 سنة”:2020, // سنة

                            “u8Month”:7,                             // شهر

                            “u8Day”:14,                       // يوم

                            “u8StartHour”:0,              // وقت البدء بالساعات

                            “u8StartMinute”:0,                   // وقت البدء بالدقائق

                            “u8EndHour”:23,             // وقت الانتهاء بالساعات

                            “u8EndMinute”:59,                  // نهاية الوقت في دقائق

                            “u8EncChn”:0,                           // 0 هي القيمة الافتراضية.

                            “u8RecordTye”:0, // نوع الملف: 0: جميع الملفات, 1: التسجيل المجدول; 2: تسجيل التنبيه; 3: الصور;

                            “u32StartIdx”:0,               // الرقم التسلسلي لملف البداية

                            “u32العدد المتوقع”: 10                 // عدد الملفات التي تم إرجاعها حسب الطلب, حاليا الحد الأقصى للقيمة هو 32.

                  }

}

البيانات التي يتم إرجاعها بواسطة الجهاز:

{

“searchRecordFileList”: {

“u32RecordFileTotalCount”: 7,                // إجمالي عدد الملفات التي تم البحث عنها خلال هذه الفترة الزمنية

“stRecordFileList”: [        // اسم الملف مع المسار, حجم الملف]

“/dev/disk/0/part0/rec-pic/20200714/0/000_180149_0_0300_2.mp4”, 251649649, “/dev/disk/0/part0/rec-pic/20200714/0/001_180644_0_0169_256.mp4”, 144935215, “/dev/disk/0/part0/rec-pic/20200714/0/002_181001_0_0300_2.mp4”, 251650689, “/dev/disk/0/part0/rec-pic/20200714/0/003_181458_0_0300_2.mp4”, 251657016, “/dev/disk/0/part0/rec-pic/20200714/0/004_181958_0_0300_2.mp4”, 301449467, “/dev/disk/0/part0/rec-pic/20200714/0/005_182458_0_0000_256.mp4”, 37801991, “/dev/disk/0/part0/rec-pic/20200714/0/006_182642_0_0244_256.mp4”, 200069913

]

}

}

التقط صورة JPG يدويًا:

              أرسل الأمر التالي إلى الجهاز.

              {

                            “ManualSnapJpg”:{

                            }

                  }

تم العودة بنجاح:

                  {

                  “ManualSnapJpg”: حقيقي

                   }

يقوم التحكم PWM بضبط سطوع LED:

احصل على قيمة PWM الحالية:

{

“getPwmParam”:{

          “u32PwmChn”: 0

}

}

تم العودة بنجاح:

{

“getPwmParam”:{

          “u32PwmChn”:0,

          “u8Enable”:1,

          “u8DutyValue”:20

}

}

  • اضبط قيمة PWM:

{

“setPwmParam”:{

          “u32PwmChn”: 0,

          “u8Enable”: 1,

          “u8DutyValue”: 60

}

}

تم العودة بنجاح:

{

“setPwmParam”:حقيقي

}

ملحوظة : u32PwmChn الافتراضي هو 0 ولا ينبغي تغييرها بشكل تعسفي. u8Enable له قيمة 0/1, أين 0 تعطيل إخراج PWM و 1 تمكن إخراج PWM. u8DutyValue لديه نطاق قيمة 0-100.

17. الحصول على/إعداد نص OSD:

(1)   الحصول على قناة الفيديو المحددة, معلمات نص OSD:

{“getVideoOsdTextInfo”:{

          “u8IspChn”:0,

          “u8TextIdx”:1

}}

تم العودة بنجاح:

{

“getVideoOsdTextInfo”:{

          “u8IspChn”:0, // قناة فيديو 0, أملأ 0 لكاميرا واحدة

          “u8TextIdx”:1, // رقم مربع نص OSD, دعم مربعات النص المتعددة.

          “u8Enable”:0, // يُمكَِن, 0: لا تعرض; 1: عرض

          “u16XRatioBase50000”:40000, // الإحداثيات النسبية للوضع الأفقي, بقيمة قصوى 50000.

          “u16YRatioBase50000”:1600, // الإحداثيات النسبية للوضع الرأسي, بقيمة قصوى 50000.

          “u8FgTransparency”:10, // الشفافية الأمامية [0-255]

          “u8BgTransparency”:255, // قيمة شفافية الخلفية [0-255]

          “u8SizeType”:1, // حجم النص, مدى القيمة [0-3]

          “u32TextColor_BGRA8888”:4294967295, // قيمة لون النص ARGB888

          “aszText”:”” // يعرض مربع النص سلسلة المحتوى

}

}

(2)   قم بتعيين قناة الفيديو المحددة, معلمات نص OSD:

{

“setVideoOsdTextInfo”:{

          “u8IspChn”:0,

          “u8TextIdx”:1,

          “u8Enable”:1,

          “u16XRatioBase50000”:40000,

          “u16YRatioBase50000”:1600,

          “u8FgTransparency”:10,

          “u8BgTransparency”:255,

          “u8SizeType”:1,

          “u32TextColor_BGRA8888”:4294967295,

          “aszText”:”اختبار 11111222233334444″

}

}

تم العودة بنجاح:

{

“setVideoOsdTextInfo”:حقيقي

}

النطاق السعري: $118.00 خلال $178.00
السعر الأصلي كان: $199.00.السعر الحالي هو: $130.00.
النطاق السعري: $118.00 خلال $178.00

طرح سؤال

← رجوع

شكرًا لردكم ✨