video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2021-05-25 19b3ad6e4e9c8e195e9255d5448ab5952b1ed54e
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
#if !defined(__LIB_RTSP_H__)
#define __LIB_RTSP_H__
 
 
#define RTSP_ERR_OK                0        //成功
//错误码
#define RTSP_ERR_PARAM            -1001    //参数错误
#define RTSP_ERR_TIMEOUT        -1002    //超时
#define RTSP_ERR_OPTIONS        -1003    //options 请求失败
#define RTSP_ERR_DESCRIBE        -1004    //describe请求失败
#define RTSP_ERR_SETUP            -1005    //setup请求失败
#define RTSP_ERR_PLAY            -1006    //play请求失败
#define RTSP_ERR_PAUSE            -1007    //pause请求失败
#define RTSP_ERR_TEARDOWN        -1008    //teardown请求失败
#define RTSP_ERR_NO_MEMORY      -1009   //申请内存失败
#define RTSP_ERR_CONNECT        -1010   //connect失败
#define RTSP_ERR_INITPORT        -1011   //初始化端口失败
 
//码流传输方式
typedef enum
{
    E_STREAM_TRANS_UDP            = 1,    //UDP传输码流
    E_STREAM_TRANS_TCPACTIVE    = 2,    //GB28181 TCP主动 码流传输方式  TcpClient
    E_STREAM_TRANS_TCPPASSIVE    = 3,    //GB28181 TCP被动 码流传输方式    TcpServer
}StreamTransType_E;
 
//视频请求类型
typedef enum
{
    E_VIDEO_REQUEST_REALPLAY    = 1,    //请求实时视频
    E_VIDEO_REQUEST_PLAYBACK    = 2,    //请求历史视频
    E_VIDEO_REQUEST_DOWNLOAD    = 3,    //历史视频下载
}VideoRequestType_E;
 
#define HIS_VIDEO_CTRL_PLAY     1        //点播播放控制
#define HIS_VIDEO_CTRL_FAST     2        //点播快放控制   参数范围:1-32倍
#define HIS_VIDEO_CTRL_SLOW     3        //点播慢放控制     参数范围:1-32倍
#define HIS_VIDEO_CTRL_PAUSE    4        //点播暂停控制
#define HIS_VIDEO_CTRL_JUMP        5        //点播跳转控制    参数范围:从开始计算跳转的时间  (时间单位:秒)    
 
// 码流回调的数据类型 
#define    GB_VIDEO_STREAM_H264    0
#define    GB_VIDEO_STREAM_MPEG2    1    // MPEG4        
#define    GB_VIDEO_STREAM_MPEG4    2    // MPEG4
#define    GB_VIDEO_STREAM_SVAC    3    // SVAC
#define    GB_VIDEO_STREAM_3GP        4    // 3GP
#define    GB_VIDEO_STREAM_H265    5    //H265
 
// 码流回调帧数据类型 I帧 P帧  目前只判断是否为I帧
#define GB_VIDEO_FRAME_I        1
#define GB_VIDEO_FRAME_P        2
 
////////////////////////////////////////////////////////////////////////////////
// 函数名:码流回调函数
// 描述:
// 参数:datatype:码流格式数据类型(H264 H265等) frametype:帧类型(I帧 P帧)
//    datalen:长度 data:码流数据  userdata:用户指针
//
// 返回值:会话句柄
//  。
// 说明:
//  保留原模块接口。
////////////////////////////////////////////////////////////////////////////////
typedef void (*PlayCallBack2)(int datatype, int frametype, unsigned char *data, unsigned int datalen, long userdata);
 
#ifdef __cplusplus
extern "C"{
#endif
 
////////////////////////////////////////////////////////////////////////////////
// 函数名:RTSPSTREAM_Open
// 描述:设置回调函数。
// 参数:rtsp地址、 码流回调函数、用户指针
//
//
// 返回值:会话句柄
//  。
// 说明:
//  保留原模块接口。
////////////////////////////////////////////////////////////////////////////////
long RTSPSTREAM_Open(const char *rtspurl, PlayCallBack2 streamcallback, long userdata);
 
////////////////////////////////////////////////////////////////////////////////
// 函数名:RTSPSTREAM_Contrl
// 描述:设置回调函数。
// 参数:会话句柄, 控制类型, 控制参数
// 
//
// 返回值:
//  。
// 说明:
//  保留原模块接口。
////////////////////////////////////////////////////////////////////////////////
long RTSPSTREAM_Contrl(long handle, int ctrltype, double ctrlparam);
 
////////////////////////////////////////////////////////////////////////////////
// 函数名:RTSPSTREAM_Close
// 描述:设置回调函数。
// 参数:会话句柄
//
//
// 返回值:
//  。
// 说明:
//  保留原模块接口。
////////////////////////////////////////////////////////////////////////////////
long RTSPSTREAM_Close(long handle);
 
#ifdef __cplusplus
}
#endif
 
#endif