Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
XEngine
XEngine StreamMedia
提交
08dbea36
X
XEngine StreamMedia
项目概览
XEngine
/
XEngine StreamMedia
10 个月 前同步成功
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
XEngine StreamMedia
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
08dbea36
编写于
8月 21, 2023
作者:
xengine-qyt
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed:flv.js does not play because tagsize is not right
上级
965edf28
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
112 addition
and
36 deletion
+112
-36
XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h
XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h
+4
-0
XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.cpp
...ion/ModuleSession_PullStream/ModuleSession_PullStream.cpp
+48
-0
XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.h
...ssion/ModuleSession_PullStream/ModuleSession_PullStream.h
+3
-0
XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def
...ne_Source/XEngine_ModuleSession/XEngine_ModuleSession.def
+2
-0
XEngine_Source/XEngine_ModuleSession/pch.cpp
XEngine_Source/XEngine_ModuleSession/pch.cpp
+8
-0
XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientTask.cpp
...MediaApp/StreamMedia_PullStream/PullStream_ClientTask.cpp
+4
-2
XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp
...ne_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp
+43
-34
未找到文件。
XEngine_Source/XEngine_ModuleSession/ModuleSession_Define.h
浏览文件 @
08dbea36
...
...
@@ -26,6 +26,7 @@ typedef struct
{
XCHAR
tszSMSAddr
[
MAX_PATH
];
XCHAR
tszPushAddr
[
MAX_PATH
];
int
nFLVTag
;
ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE
enStreamType
;
}
STREAMMEDIA_PULLLISTINFO
;
...
...
@@ -169,6 +170,9 @@ extern "C" bool ModuleSession_PullStream_PublishDelete(LPCXSTR lpszClientAddr);
备注:
*********************************************************************/
extern
"C"
bool
ModuleSession_PullStream_GetList
(
STREAMMEDIA_PULLLISTINFO
***
pppSt_PullList
,
int
*
pInt_ListCount
);
extern
"C"
bool
ModuleSession_PullStream_FLVTagSet
(
LPCXSTR
lpszClientAddr
,
int
nTagSize
);
extern
"C"
bool
ModuleSession_PullStream_FLVTagGet
(
LPCXSTR
lpszClientAddr
,
int
*
pInt_TagSize
);
/*********************************************************************************
* 推流端导出会话模块 *
*********************************************************************************/
...
...
XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.cpp
浏览文件 @
08dbea36
...
...
@@ -300,4 +300,52 @@ bool CModuleSession_PullStream::ModuleSession_PullStream_GetList(STREAMMEDIA_PUL
}
st_Locker
.
unlock_shared
();
return
true
;
}
bool
CModuleSession_PullStream
::
ModuleSession_PullStream_FLVTagSet
(
LPCXSTR
lpszClientAddr
,
int
nTagSize
)
{
Session_IsErrorOccur
=
false
;
if
(
NULL
==
lpszClientAddr
)
{
Session_IsErrorOccur
=
true
;
Session_dwErrorCode
=
ERROR_STREAMMEDIA_MODULE_SESSION_PARAMENT
;
return
false
;
}
st_Locker
.
lock_shared
();
//查找最小
auto
stl_MapIterator
=
stl_MapClient
.
find
(
lpszClientAddr
);
if
(
stl_MapIterator
==
stl_MapClient
.
end
())
{
Session_IsErrorOccur
=
true
;
Session_dwErrorCode
=
ERROR_STREAMMEDIA_MODULE_SESSION_NOTFOUND
;
st_Locker
.
unlock_shared
();
return
false
;
}
stl_MapIterator
->
second
->
nFLVTag
=
nTagSize
;
st_Locker
.
unlock_shared
();
return
true
;
}
bool
CModuleSession_PullStream
::
ModuleSession_PullStream_FLVTagGet
(
LPCXSTR
lpszClientAddr
,
int
*
pInt_TagSize
)
{
Session_IsErrorOccur
=
false
;
if
(
NULL
==
lpszClientAddr
)
{
Session_IsErrorOccur
=
true
;
Session_dwErrorCode
=
ERROR_STREAMMEDIA_MODULE_SESSION_PARAMENT
;
return
false
;
}
st_Locker
.
lock_shared
();
//查找最小
auto
stl_MapIterator
=
stl_MapClient
.
find
(
lpszClientAddr
);
if
(
stl_MapIterator
==
stl_MapClient
.
end
())
{
Session_IsErrorOccur
=
true
;
Session_dwErrorCode
=
ERROR_STREAMMEDIA_MODULE_SESSION_NOTFOUND
;
st_Locker
.
unlock_shared
();
return
false
;
}
*
pInt_TagSize
=
stl_MapIterator
->
second
->
nFLVTag
;
st_Locker
.
unlock_shared
();
return
true
;
}
\ No newline at end of file
XEngine_Source/XEngine_ModuleSession/ModuleSession_PullStream/ModuleSession_PullStream.h
浏览文件 @
08dbea36
...
...
@@ -23,6 +23,9 @@ public:
bool
ModuleSession_PullStream_Delete
(
LPCXSTR
lpszClientAddr
);
bool
ModuleSession_PullStream_PublishDelete
(
LPCXSTR
lpszClientAddr
);
bool
ModuleSession_PullStream_GetList
(
STREAMMEDIA_PULLLISTINFO
***
pppSt_PullList
,
int
*
pInt_ListCount
);
public:
bool
ModuleSession_PullStream_FLVTagSet
(
LPCXSTR
lpszClientAddr
,
int
nTagSize
);
bool
ModuleSession_PullStream_FLVTagGet
(
LPCXSTR
lpszClientAddr
,
int
*
pInt_TagSize
);
private:
shared_mutex
st_Locker
;
private:
...
...
XEngine_Source/XEngine_ModuleSession/XEngine_ModuleSession.def
浏览文件 @
08dbea36
...
...
@@ -10,6 +10,8 @@ EXPORTS
ModuleSession_PullStream_Delete
ModuleSession_PullStream_PublishDelete
ModuleSession_PullStream_GetList
ModuleSession_PullStream_FLVTagSet
ModuleSession_PullStream_FLVTagGet
ModuleSession_PushStream_Create
ModuleSession_PushStream_Destroy
...
...
XEngine_Source/XEngine_ModuleSession/pch.cpp
浏览文件 @
08dbea36
...
...
@@ -59,6 +59,14 @@ extern "C" bool ModuleSession_PullStream_GetList(STREAMMEDIA_PULLLISTINFO * **pp
{
return
m_PullStream
.
ModuleSession_PullStream_GetList
(
pppSt_PullList
,
pInt_ListCount
);
}
extern
"C"
bool
ModuleSession_PullStream_FLVTagSet
(
LPCXSTR
lpszClientAddr
,
int
nTagSize
)
{
return
m_PullStream
.
ModuleSession_PullStream_FLVTagSet
(
lpszClientAddr
,
nTagSize
);
}
extern
"C"
bool
ModuleSession_PullStream_FLVTagGet
(
LPCXSTR
lpszClientAddr
,
int
*
pInt_TagSize
)
{
return
m_PullStream
.
ModuleSession_PullStream_FLVTagGet
(
lpszClientAddr
,
pInt_TagSize
);
}
/*********************************************************************************
* 推流导出会话模块 *
*********************************************************************************/
...
...
XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/StreamMedia_PullStream/PullStream_ClientTask.cpp
浏览文件 @
08dbea36
...
...
@@ -109,6 +109,10 @@ bool PullStream_ClientTask_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr
memcpy
(
tszSDBuffer
+
nSDLen
,
_X
(
"
\r\n
"
),
2
);
nSDLen
+=
2
;
XEngine_Network_Send
(
lpszClientAddr
,
tszSDBuffer
,
nSDLen
,
ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP
);
ModuleSession_PullStream_Insert
(
lpszClientAddr
,
tszSMSAddr
,
tszPushAddr
,
enStreamType
);
ModuleSession_PushStream_ClientInsert
(
tszPushAddr
,
lpszClientAddr
,
enStreamType
);
ModuleSession_PullStream_FLVTagSet
(
lpszClientAddr
,
nTagSize
);
}
else
if
(
0
==
_tcsxnicmp
(
tszVluBuffer
,
"xstream"
,
7
))
{
...
...
@@ -122,8 +126,6 @@ bool PullStream_ClientTask_Handle(LPCXSTR lpszClientAddr, XCHAR*** ppptszListHdr
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR
,
_X
(
"拉流端:%s,请求拉流的数据类型不支持:%s,错误:%lX"
),
lpszClientAddr
,
tszVluBuffer
,
ModuleSession_GetLastError
());
return
false
;
}
ModuleSession_PullStream_Insert
(
lpszClientAddr
,
tszSMSAddr
,
tszPushAddr
,
enStreamType
);
ModuleSession_PushStream_ClientInsert
(
tszPushAddr
,
lpszClientAddr
,
enStreamType
);
XLOG_PRINT
(
xhLog
,
XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO
,
_X
(
"拉流端:%s,请求拉流数据成功:%s"
),
lpszClientAddr
,
tszVluBuffer
);
}
else
if
(
0
==
_tcsxnicmp
(
lpszStreamStop
,
tszVluBuffer
,
_tcsxlen
(
lpszStreamStop
)))
...
...
XEngine_Source/XEngine_ServiceApp/XEngine_StreamMediaApp/XEngine_AVPacket.cpp
浏览文件 @
08dbea36
...
...
@@ -190,20 +190,6 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
}
if
(
st_ServiceConfig
.
st_XPull
.
st_PullFlv
.
bEnable
)
{
if
(
0
==
byAVType
)
{
FLVProtocol_Packet_FrameVideo
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
+
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nMsgLen
-
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nTimeStamp
);
}
else
{
FLVProtocol_Packet_FrameAudio
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
+
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nMsgLen
-
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nTimeStamp
);
}
*
pInt_SDLen
=
_xstprintf
(
ptszSDBuffer
,
_X
(
"%x
\r\n
"
),
*
pInt_RVLen
);
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
ptszRVBuffer
,
*
pInt_RVLen
);
*
pInt_SDLen
+=
*
pInt_RVLen
;
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
_X
(
"
\r\n
"
),
2
);
*
pInt_SDLen
+=
2
;
//是否有客户端需要发送XStream流
list
<
STREAMMEDIA_SESSIONCLIENT
>
stl_ListClient
;
ModuleSession_PushStream_ClientList
(
lpszClientAddr
,
&
stl_ListClient
);
...
...
@@ -211,7 +197,26 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
{
if
(
ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV
==
stl_ListIteratorClient
->
enClientType
)
{
int
nTagSize
=
0
;
ModuleSession_PullStream_FLVTagGet
(
stl_ListIteratorClient
->
tszClientID
,
&
nTagSize
);
if
(
0
==
byAVType
)
{
FLVProtocol_Packet_FrameVideo
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
+
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nMsgLen
-
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nTimeStamp
);
}
else
{
FLVProtocol_Packet_FrameAudio
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
+
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nMsgLen
-
sizeof
(
XENGINE_PROTOCOL_AVDATA
),
nTimeStamp
);
}
*
pInt_SDLen
=
_xstprintf
(
ptszSDBuffer
,
_X
(
"%x
\r\n
"
),
*
pInt_RVLen
);
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
ptszRVBuffer
,
*
pInt_RVLen
);
*
pInt_SDLen
+=
*
pInt_RVLen
;
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
_X
(
"
\r\n
"
),
2
);
*
pInt_SDLen
+=
2
;
XEngine_Network_Send
(
stl_ListIteratorClient
->
tszClientID
,
ptszSDBuffer
,
*
pInt_SDLen
,
ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP
);
ModuleSession_PullStream_FLVTagSet
(
stl_ListIteratorClient
->
tszClientID
,
nTagSize
);
break
;
}
}
...
...
@@ -282,26 +287,6 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
}
if
(
st_ServiceConfig
.
st_XPull
.
st_PullFlv
.
bEnable
)
{
if
(
0
==
byAVType
)
{
FLVProtocol_Packet_FrameCustom
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
,
nMsgLen
,
-
1
,
9
);
*
pInt_SDLen
=
_xstprintf
(
ptszSDBuffer
,
_X
(
"%x
\r\n
"
),
*
pInt_RVLen
);
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
ptszRVBuffer
,
*
pInt_RVLen
);
*
pInt_SDLen
+=
*
pInt_RVLen
;
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
_X
(
"
\r\n
"
),
2
);
*
pInt_SDLen
+=
2
;
}
else
{
FLVProtocol_Packet_FrameCustom
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
,
nMsgLen
,
-
1
,
8
);
*
pInt_SDLen
=
_xstprintf
(
ptszSDBuffer
,
_X
(
"%x
\r\n
"
),
*
pInt_RVLen
);
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
ptszRVBuffer
,
*
pInt_RVLen
);
*
pInt_SDLen
+=
*
pInt_RVLen
;
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
_X
(
"
\r\n
"
),
2
);
*
pInt_SDLen
+=
2
;
}
//是否有客户端需要发送FLV流
list
<
STREAMMEDIA_SESSIONCLIENT
>
stl_ListClient
;
ModuleSession_PushStream_ClientList
(
lpszClientAddr
,
&
stl_ListClient
);
...
...
@@ -309,7 +294,31 @@ bool XEngine_AVPacket_AVFrame(XCHAR* ptszSDBuffer, int* pInt_SDLen, XCHAR* ptszR
{
if
(
ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_PULL_FLV
==
stl_ListIteratorClient
->
enClientType
)
{
int
nTagSize
=
0
;
ModuleSession_PullStream_FLVTagGet
(
stl_ListIteratorClient
->
tszClientID
,
&
nTagSize
);
if
(
0
==
byAVType
)
{
FLVProtocol_Packet_FrameCustom
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
,
nMsgLen
,
-
1
,
9
,
&
nTagSize
);
*
pInt_SDLen
=
_xstprintf
(
ptszSDBuffer
,
_X
(
"%x
\r\n
"
),
*
pInt_RVLen
);
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
ptszRVBuffer
,
*
pInt_RVLen
);
*
pInt_SDLen
+=
*
pInt_RVLen
;
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
_X
(
"
\r\n
"
),
2
);
*
pInt_SDLen
+=
2
;
}
else
{
FLVProtocol_Packet_FrameCustom
(
lpszClientAddr
,
ptszRVBuffer
,
pInt_RVLen
,
lpszMsgBuffer
,
nMsgLen
,
-
1
,
8
,
&
nTagSize
);
*
pInt_SDLen
=
_xstprintf
(
ptszSDBuffer
,
_X
(
"%x
\r\n
"
),
*
pInt_RVLen
);
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
ptszRVBuffer
,
*
pInt_RVLen
);
*
pInt_SDLen
+=
*
pInt_RVLen
;
memcpy
(
ptszSDBuffer
+
*
pInt_SDLen
,
_X
(
"
\r\n
"
),
2
);
*
pInt_SDLen
+=
2
;
}
XEngine_Network_Send
(
stl_ListIteratorClient
->
tszClientID
,
ptszSDBuffer
,
*
pInt_SDLen
,
ENUM_XENGINE_STREAMMEDIA_CLIENT_TYPE_HTTP
);
ModuleSession_PullStream_FLVTagSet
(
stl_ListIteratorClient
->
tszClientID
,
nTagSize
);
break
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录