RecordVideo.c
2.1 KB
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
#include <stdio.h>
#include "../CameraParameter.h"
#include "../V4L2/V4L2_Record.h"
#include "JZsdkLib.h"
FILE *FrameDeal_RecordVideo_fp = NULL;
static int FrameDeal_RecordVideo_mode = JZ_FLAGCODE_OFF;
extern int VideoTranscode_Flag ; //视频转码标志位,off为转码完毕,on为转码完成
/*
录像部分
*/
// 录像函数
static void FrameDeal_RecordVideo(char* h264_data, uint32_t data_len)
{
fwrite(h264_data, data_len, 1, FrameDeal_RecordVideo_fp);
//JZSDK_LOG_INFO("写入一帧");
}
//录像模式传递函数
T_JZsdkReturnCode FrameDeal_RecordVideo_trans(int mode)
{
JZSDK_LOG_INFO("录像传递函数被调用");
//如果传来一个开始录像的指令,且当前没有打开录像, 且没在进行转码
if( mode == JZ_FLAGCODE_ON && FrameDeal_RecordVideo_mode == JZ_FLAGCODE_OFF && VideoTranscode_Flag == JZ_FLAGCODE_OFF)
{
FrameDeal_RecordVideo_fp = fopen("/root/sdcard/DCIM/Videos/temp.h264","wb");
if (FrameDeal_RecordVideo_fp == NULL)
{
JZSDK_LOG_ERROR("录像文件打开错误");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
FrameDeal_RecordVideo_mode = JZ_FLAGCODE_ON;
JZSDK_LOG_INFO("录像文件已经打开");
}
else if(mode == JZ_FLAGCODE_OFF && FrameDeal_RecordVideo_mode == JZ_FLAGCODE_ON)
{
//关闭录像的文件
JZSDK_LOG_INFO("录像已保存");
fclose(FrameDeal_RecordVideo_fp);
//转码
//录像转码解锁函数
ffmpeg_H264_tanscodeto(2);
//关闭录像
FrameDeal_RecordVideo_mode = JZ_FLAGCODE_OFF;
}
else
{
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
int V4L2_RecordVedioDeal(char *h264_data, int dataLen)
{
if(FrameDeal_RecordVideo_mode == JZ_FLAGCODE_OFF)
{
return -1;
}
//录像函数
FrameDeal_RecordVideo( h264_data, dataLen);
//JZSDK_LOG_INFO("录入一帧");
}