@@ -18,9 +18,10 @@ int CALLBACK Test_MediaCallBack(XSDK_HANDLE hMedia, const unsigned char *pData, | |||||
if (pFrame->nType == XSDK_FRAME_TYPE_VIDEO) | if (pFrame->nType == XSDK_FRAME_TYPE_VIDEO) | ||||
{ | { | ||||
string fmt("/media-file/origin/%04d-%02d-%02d-%02d.dat"); | |||||
int pos = getPos(hMedia); | |||||
string fmt("/media-file/origin/%s/%04d-%02d-%02d-%02d.dat"); | |||||
char file_name[1024]; | char file_name[1024]; | ||||
snprintf(file_name,sizeof(file_name),fmt.c_str(),pFrame->nYear,pFrame->nMonth,pFrame->nDay,pFrame->nHour) ; | |||||
snprintf(file_name,sizeof(file_name),fmt.c_str(),DeviceIdArr[pos],pFrame->nYear,pFrame->nMonth,pFrame->nDay,pFrame->nHour) ; | |||||
// ABFile("video_header.dat", pFrame->pHeader, pFrame->nLength); | // ABFile("video_header.dat", pFrame->pHeader, pFrame->nLength); | ||||
ABFile(file_name, pFrame->pContent, pFrame->nFrameLength); | ABFile(file_name, pFrame->pContent, pFrame->nFrameLength); | ||||
} | } | ||||
@@ -41,6 +42,16 @@ int CALLBACK Test_MediaCallBack(XSDK_HANDLE hMedia, const unsigned char *pData, | |||||
return 0; | return 0; | ||||
} | } | ||||
int getPos(XSDK_HANDLE hMedia) { | |||||
int size = sizeof(hDeviceArr) / sizeof(hDeviceArr); | |||||
for (int i = 0; i < size; i++) { | |||||
if (hDeviceArr[i] == hMedia) { | |||||
return i; | |||||
} | |||||
} | |||||
return -1; | |||||
} | |||||
int TestMediaRealPlay() | int TestMediaRealPlay() | ||||
{ | { | ||||
printf("MediaRealPlay %s\r\n", __FUNCTION__); | printf("MediaRealPlay %s\r\n", __FUNCTION__); | ||||
@@ -61,15 +72,18 @@ int TestMediaRealPlay() | |||||
XSDK_MediaStop(hPlayer); | XSDK_MediaStop(hPlayer); | ||||
hPlayer = 0; | hPlayer = 0; | ||||
} | } | ||||
SXMediaRealPlayReq param = {0}; | |||||
param.nChannel = 0; | |||||
param.nStreamType = 0; | |||||
param.nRequestType = EXSDK_DATA_FORMATE_FRAME; | |||||
param.pMediaCallback = Test_MediaCallBack; | |||||
hPlayer = XSDK_MediaRealPlay(g_hDevice, ¶m); | |||||
bPause = false; | |||||
nSpeed = 0; | |||||
int size = sizeof(hDeviceArr) / sizeof(hDeviceArr); | |||||
for (int i = 0; i < size; i++) | |||||
{ | |||||
SXMediaRealPlayReq param = { 0 }; | |||||
param.nChannel = 0; | |||||
param.nStreamType = 0; | |||||
param.nRequestType = EXSDK_DATA_FORMATE_FRAME; | |||||
param.pMediaCallback = Test_MediaCallBack; | |||||
hPlayer = XSDK_MediaRealPlay(hDeviceArr[i], ¶m); | |||||
bPause = false; | |||||
nSpeed = 0; | |||||
} | |||||
} | } | ||||
break; | break; | ||||
case 't': | case 't': | ||||
@@ -1,13 +1,14 @@ | |||||
#include "XNetSDKTest.h" | #include "XNetSDKTest.h" | ||||
#include "XNetSDKSyn.h" | #include "XNetSDKSyn.h" | ||||
XSDK_HANDLE g_hDevice = 0; | |||||
XSDK_HANDLE g_hDevice ; | |||||
SXMediaRecordByFileReq info = {0}; | SXMediaRecordByFileReq info = {0}; | ||||
bool bFindFile = false; | bool bFindFile = false; | ||||
#define TEST_DAS_SERVER 1 | #define TEST_DAS_SERVER 1 | ||||
int CALLBACK Main_MessageCallBack(XSDK_HANDLE hDevice, int nMsgId, int nParam1, int nParam2, int nParam3, const char *szString, void *pObject, int nSeq, void *pUserData) | int CALLBACK Main_MessageCallBack(XSDK_HANDLE hDevice, int nMsgId, int nParam1, int nParam2, int nParam3, const char *szString, void *pObject, int nSeq, void *pUserData) | ||||
{ | { | ||||
int dPos = 0 ; | |||||
switch(nMsgId) | switch(nMsgId) | ||||
{ | { | ||||
case ESXSDK_DEV_FIND_FILE: | case ESXSDK_DEV_FIND_FILE: | ||||
@@ -66,10 +67,15 @@ int CALLBACK Main_MessageCallBack(XSDK_HANDLE hDevice, int nMsgId, int nParam1, | |||||
case ESXSDK_ON_DAS_DEVICE_REGIST: | case ESXSDK_ON_DAS_DEVICE_REGIST: | ||||
{ | { | ||||
#ifdef TEST_DAS_SERVER | #ifdef TEST_DAS_SERVER | ||||
g_hDevice = hDevice; | |||||
g_hDevice = hDevice; | |||||
#endif | #endif | ||||
OnDASDeviceReg(hDevice, (SXSDKDASDeviceInfo *)pObject); | |||||
{ | |||||
OnDASDeviceReg(hDevice, (SXSDKDASDeviceInfo *)pObject); | |||||
hDeviceArr[dPos] = hDevice ; | |||||
DeviceIdArr[dPos] = ((SXSDKDASDeviceInfo*)pObject)->sDevId ; | |||||
dPos++ ; | |||||
} | |||||
} | } | ||||
break; | break; | ||||
case ESXSDK_DEV_SNAP: | case ESXSDK_DEV_SNAP: | ||||
@@ -13,6 +13,8 @@ | |||||
using namespace std; | using namespace std; | ||||
extern XSDK_HANDLE g_hDevice; | extern XSDK_HANDLE g_hDevice; | ||||
extern XSDK_HANDLE hDeviceArr[6]; | |||||
extern char* DeviceIdArr[6]; | |||||
extern SXMediaRecordByFileReq info; | extern SXMediaRecordByFileReq info; | ||||
extern bool bFindFile; | extern bool bFindFile; | ||||
@@ -1,7 +1,9 @@ | |||||
| | ||||
Microsoft Visual Studio Solution File, Format Version 10.00 | |||||
# Visual Studio 2008 | |||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XNetSDKTest", "XNetSDKTest.vcproj", "{F3AFE773-6A5A-4952-BEDA-A97CD94D636E}" | |||||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio Version 16 | |||||
VisualStudioVersion = 16.0.29613.14 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | |||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XNetSDKTest", "XNetSDKTest.vcxproj", "{F3AFE773-6A5A-4952-BEDA-A97CD94D636E}" | |||||
EndProject | EndProject | ||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
@@ -14,4 +16,7 @@ Global | |||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(ExtensibilityGlobals) = postSolution | |||||
SolutionGuid = {7FD0D994-15F1-4149-A033-B5427277A290} | |||||
EndGlobalSection | |||||
EndGlobal | EndGlobal |
@@ -1,39 +0,0 @@ | |||||
""" | |||||
video.py h265[h264] | |||||
""" | |||||
import sys | |||||
import subprocess | |||||
import time | |||||
import os | |||||
DAT_FOLDER = "/media-file/origin" | |||||
TARGET_FOLDER="/media-file/camera" | |||||
SUFFIX=".dat" | |||||
TARGET_SUFFIX=".mp4" | |||||
codec = "h265" | |||||
if(len(sys.argv)>1): | |||||
codec=sys.argv[1] | |||||
# timeout=sys.argv[2] | |||||
print("codec:: {0}".format(codec)) | |||||
current_time=time.strftime(time.strftime("%Y-%m-%d-%H"),time.localtime()) | |||||
file_list = os.listdir(DAT_FOLDER) | |||||
if file_list: | |||||
for dat in file_list: | |||||
if current_time+".dat" == dat: | |||||
print("{0} ignore".format(dat)) | |||||
continue | |||||
cmd = "ffmpeg -i " + os.path.join(DAT_FOLDER,dat) + " -c copy " + os.path.join(TARGET_FOLDER, codec, dat.split(".")[0], TARGET_SUFFIX) | |||||
print("cmd:: {0}".format(cmd)) | |||||
status, output = subprocess.getstatusoutput(cmd) | |||||
print("status:: {0}, output {1}".format(status,output)) | |||||
if status==0: | |||||
print("{0} convert sucessfull, origin dat will remove!".format(dat)) | |||||
os.remove(os.path.join(DAT_FOLDER, dat)) | |||||
else: | |||||
print("{0} convert fail".format(dat)) | |||||
else: | |||||
print("folder is empty") | |||||
@@ -0,0 +1,45 @@ | |||||
""" | |||||
video.py h265[h264] | |||||
""" | |||||
import sys | |||||
import subprocess | |||||
import time | |||||
import os | |||||
DAT_FOLDER = "./" | |||||
TARGET_FOLDER = "/media-file/camera" | |||||
SUFFIX = ".dat" | |||||
TARGET_SUFFIX = ".mp4" | |||||
def list_folder(org_folder, tar_folder, code): | |||||
current_time = time.strftime(time.strftime("%Y-%m-%d-%H"), time.localtime()) | |||||
for root, dirs, files in os.walk(org_folder): | |||||
for f in files: | |||||
if current_time + ".dat" == f: | |||||
print("{0} ignore".format(os.path.join(root, f))) | |||||
continue | |||||
convert(os.path.join(root, f), os.path.join(tar_folder, list(root.split("/"))[-1], f+TARGET_SUFFIX)) | |||||
def convert(origin, target): | |||||
print("origin: {0} ,target: {1}".format(origin,target)) | |||||
cmd = "ffmpeg -i " + origin + "-c copy " + target | |||||
print("cmd:: {0}".format(cmd)) | |||||
status, output = subprocess.getstatusoutput(cmd) | |||||
print("status:: {0}, output {1}".format(status, output)) | |||||
if status == 0: | |||||
print("{0} convert {1} Success, origin dat will remove!".format(origin, target)) | |||||
os.remove(origin) | |||||
else: | |||||
print("{0} convert fail".format(origin)) | |||||
if __name__ == "__main__": | |||||
codec = "h265" | |||||
if len(sys.argv) > 1: | |||||
codec = sys.argv[1] | |||||
# timeout=sys.argv[2] | |||||
print("codec:: {0}".format(codec)) | |||||
list_folder(DAT_FOLDER, TARGET_FOLDER, codec) |