Skip to content

Playback

Find and playback video

Interface Overview

interface Name Functional Description
NET_SDK_FindFile Find Recording
NET_SDK_FindNextFile Get file information (file name, size, start and end time)
NET_SDK_FindClose Close Find File
NET_SDK_PlayBackByTime Play By Time
NET_SDK_PlayBackControl Control Playback Status
NET_SDK_StopPlayBack Stop playback
Note

For detailed parameters of the interface, see the interface definition section.

Process Description

---
title: Video Playback
---

flowchart TD
    A(Device SDK initialization <br> <strong>NET_SDK_Init</strong>)
    B(User registers device <br> <strong>NET_SDK_Login</strong> or <br> <strong>NET_SDK_LoginEx</strong>)

    subgraph SF [Find video file]
        direction LR
        S0(Find video file <br> <strong>NET_SDK_FindFile</strong>)
        S1(Get video file information one by one <br> <strong>NET_SDK_FindNextFile</strong>)
        S2(Stop video search <br> <strong>NET_SDK_FindClose</strong>)
        S0 --> S1 --> S2
    end

    subgraph SF1 [Video file playback]
        direction LR
        S00(Playback by time <br> <strong>NET_SDK_PlayBackByTime</strong>)
        S01(Playback status control <br> <strong>NET_SDK_PlayBackControl</strong>)
        S02(Stop video playback <br> <strong>NET_SDK_StopPlayBack</strong>)
        S00 --> S01 --> S02
    end

    E(Log out of device <br><strong>NET_SDK_Logout</strong>)
    F(Release SDK resources <br><strong>NET_SDK_Cleanup</strong>)

    A --> B --> SF --> SF1 --> E --> F
  • NET_SDK_FindFile: Query whether there is a video file in a certain time period

  • NET_SDK_FindNextFile: Handle returned by NET_SDK_FindFile, query the specific information of the recording file, including the start and end time of the recording, etc.

  • NET_SDK_PlayBackByTime: Start and end time of the video returned by NET_SDK_FindNextFile, play back the video

Sample Code

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream>
#include <string>
#include "stdafx.h"
#include "DVR_NET_SDK.h"
#include <iomanip>
#include <sstream>
#include <ctime>

using namespace std;

/*
    Transform string time to CTime
*/
CTime parseStrTimeToCTime(string_view intime)
{
    tm tm = {};
    istringstream ss(intime.data());
    // Parse string time
    ss >> get_time(&tm, "%Y-%m-%d %H:%M:%S");
    // Transform tm to time_t
    time_t tt = mktime(&tm);
    // Transform time_t to CTime
    CTime ctime(tt);
    return ctime;
}
void Playback()
{
    // Initial
    NET_SDK_Init();
    // Device information
    const std::string device_ip = "10.80.1.177";
    const DWORD decice_port = 6036;
    const std::string username = "admin";
    const std::string password = "123456";
    // Login
    NET_SDK_DEVICEINFO device_info = {0};
    LONG userid = NET_SDK_Login(const_cast<char *>(device_ip.c_str()), decice_port, const_cast<char *>(username.c_str()), const_cast<char *>(password.c_str()), &device_info);

    if (userid > 0)
    {
        cout << "Login successfully: " << userid << endl;
    }
    else
    {
        cout << "Failed to login: " << userid << endl;
        return;
    }

    // Find record file
    LONG chnn = 0;
    CTime startTime = parseStrTimeToCTime("2023-05-05 00:00:00");
    CTime endTime = parseStrTimeToCTime("2023-05-05 23:59:59");
    DD_TIME start = {startTime.GetSecond(), startTime.GetMinute(), startTime.GetHour(), 3, startTime.GetDay(), startTime.GetMonth() - 1, startTime.GetYear() - 1900};
    DD_TIME end = {endTime.GetSecond(), endTime.GetMinute(), endTime.GetHour(), 3, endTime.GetDay(), endTime.GetMonth() - 1, endTime.GetYear() - 1900};
    LONG ffHandle = NET_SDK_FindFile(userid, chnn, &start, &end);

    if (ffHandle == -1)
    {
        DWORD err1 = NET_SDK_GetLastError();
        cout << "Failed to find record file! Error code: " << err1 << endl;
    }
    else
    {
        cout << "Find record file successfully!" << endl;
        // Get file information (filename, size, startTime and stopTime)
        NET_SDK_REC_FILE file;
        LONG result = NET_SDK_FindNextFile(ffHandle, &file);
        HWND hWnd = GetConsoleWindow();

        if (result != NET_SDK_FILE_SUCCESS)
        {
            DWORD err4 = NET_SDK_GetLastError();
            cout << "Failed to get file information! Error code: " << err4 << endl;
        }
        else
        {
            cout << "Get file information successfully!" << endl;
            // Playback by time
            LONG plHandle = NET_SDK_PlayBackByTime(userid, &chnn, 1, &file.startTime, &file.stopTime, &hWnd);
            // Waiting for playback
            Sleep(3000);

            if (plHandle == -1)
            {
                DWORD err3 = NET_SDK_GetLastError();
                cout << "Pailed to playback! error code: " << err3 << endl;
            }
            else
            {
                cout << "Playback successfully!" << endl;
                // Control the status of playback
                BOOL control = NET_SDK_PlayBackControl(plHandle, NET_SDK_PLAYCTRL_PAUSE, NET_SDK_RPB_SPEED_1_32X, NULL);

                if (control != true)
                {
                    DWORD err2 = NET_SDK_GetLastError();
                    cout << "Failed to pause playback! " << err2 << endl;
                }
                else
                {
                    cout << "Pause playback successfully! " << endl;
                }

                // Stop to playback
                NET_SDK_StopPlayBack(plHandle);
            }
        }

        // Stop to Find record file
        NET_SDK_FindClose(ffHandle);
    }

    // Logout
    NET_SDK_Logout(userid);
    // Clean up the data
    NET_SDK_Cleanup();
}

Relevant Instructions

  • NET_SDK_PlayBackControl only exemplifies pausing playback (NET_SDK_PLAYCTRL_pause)
Error Code