Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
891b86e7
Commit
891b86e7
authored
Mar 10, 2020
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增拉流代理源相关api
parent
b3554fb7
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
55 行增加
和
12 行删除
+55
-12
api/include/mk_media.h
+7
-6
api/include/mk_proxyplayer.h
+26
-0
api/source/mk_media.cpp
+3
-6
api/source/mk_proxyplayer.cpp
+19
-0
没有找到文件。
api/include/mk_media.h
查看文件 @
891b86e7
...
@@ -130,17 +130,18 @@ API_EXPORT void API_CALL mk_media_input_aac(mk_media ctx, void *data, int len, u
...
@@ -130,17 +130,18 @@ API_EXPORT void API_CALL mk_media_input_aac(mk_media ctx, void *data, int len, u
API_EXPORT
void
API_CALL
mk_media_input_aac1
(
mk_media
ctx
,
void
*
data
,
int
len
,
uint32_t
dts
,
void
*
adts
);
API_EXPORT
void
API_CALL
mk_media_input_aac1
(
mk_media
ctx
,
void
*
data
,
int
len
,
uint32_t
dts
,
void
*
adts
);
/**
/**
* 在调用对应的MediaSource.close()时会触发该回调
* MediaSource.close()回调事件
* 你可以在该事件中做清理工作(比如说关闭摄像头,同时调用mk_media_release函数销毁该对象)
* 在选择关闭一个关联的MediaSource时,将会最终触发到该回调
* 你应该通过该事件调用mk_media_release函数并且释放其他资源
* 如果你不调用mk_media_release函数,那么MediaSource.close()操作将无效
* @param user_data 用户数据指针,通过mk_media_set_on_close函数设置
* @param user_data 用户数据指针,通过mk_media_set_on_close函数设置
* @return 返回0告知事件触发者关闭媒体失败,非0代表成功
*/
*/
typedef
int
(
API_CALL
*
on_mk_media_close
)(
void
*
user_data
);
typedef
void
(
API_CALL
*
on_mk_media_close
)(
void
*
user_data
);
/**
/**
* 监听MediaSource.close()事件
* 监听MediaSource.close()事件
* 在选择关闭一个MediaSource时,将会最终触发到该回调
* 在选择关闭一个
关联的
MediaSource时,将会最终触发到该回调
* 你
可以通过该事件选择删除对象,当然你在该事件中也可以什么都不做
* 你
应该通过该事件调用mk_media_release函数并且释放其他资源
* @param ctx 对象指针
* @param ctx 对象指针
* @param cb 回调指针
* @param cb 回调指针
* @param user_data 用户数据指针
* @param user_data 用户数据指针
...
...
api/include/mk_proxyplayer.h
查看文件 @
891b86e7
...
@@ -68,6 +68,32 @@ API_EXPORT void API_CALL mk_proxy_player_set_option(mk_proxy_player ctx, const c
...
@@ -68,6 +68,32 @@ API_EXPORT void API_CALL mk_proxy_player_set_option(mk_proxy_player ctx, const c
*/
*/
API_EXPORT
void
API_CALL
mk_proxy_player_play
(
mk_proxy_player
ctx
,
const
char
*
url
);
API_EXPORT
void
API_CALL
mk_proxy_player_play
(
mk_proxy_player
ctx
,
const
char
*
url
);
/**
* MediaSource.close()回调事件
* 在选择关闭一个关联的MediaSource时,将会最终触发到该回调
* 你应该通过该事件调用mk_proxy_player_release函数并且释放其他资源
* 如果你不调用mk_proxy_player_release函数,那么MediaSource.close()操作将无效
* @param user_data 用户数据指针,通过mk_proxy_player_set_on_close函数设置
*/
typedef
void
(
API_CALL
*
on_mk_proxy_player_close
)(
void
*
user_data
);
/**
* 监听MediaSource.close()事件
* 在选择关闭一个关联的MediaSource时,将会最终触发到该回调
* 你应该通过该事件调用mk_proxy_player_release函数并且释放其他资源
* @param ctx 对象指针
* @param cb 回调指针
* @param user_data 用户数据指针
*/
API_EXPORT
void
API_CALL
mk_proxy_player_set_on_close
(
mk_proxy_player
ctx
,
on_mk_proxy_player_close
cb
,
void
*
user_data
);
/**
* 获取总的观看人数
* @param ctx 对象指针
* @return 观看人数
*/
API_EXPORT
int
API_CALL
mk_proxy_player_total_reader_count
(
mk_proxy_player
ctx
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
#endif
#endif
...
...
api/source/mk_media.cpp
查看文件 @
891b86e7
...
@@ -62,14 +62,11 @@ protected:
...
@@ -62,14 +62,11 @@ protected:
}
}
if
(
!
_cb
){
if
(
!
_cb
){
//未设置回调,没法关闭
//未设置回调,没法关闭
WarnL
<<
"请使用mk_media_set_on_close函数设置回调函数!"
;
return
false
;
return
false
;
}
}
if
(
!
_cb
(
_user_data
)){
//请在回调中调用mk_media_release函数释放资源,否则MediaSource::close()操作不会生效
//回调选择返回不关闭该视频
_cb
(
_user_data
);
return
false
;
}
//回调中已经关闭该视频
WarnL
<<
"close media:"
<<
sender
.
getSchema
()
<<
"/"
<<
sender
.
getVhost
()
<<
"/"
<<
sender
.
getApp
()
<<
"/"
<<
sender
.
getId
()
<<
" "
<<
force
;
WarnL
<<
"close media:"
<<
sender
.
getSchema
()
<<
"/"
<<
sender
.
getVhost
()
<<
"/"
<<
sender
.
getApp
()
<<
"/"
<<
sender
.
getId
()
<<
" "
<<
force
;
return
true
;
return
true
;
}
}
...
...
api/source/mk_proxyplayer.cpp
查看文件 @
891b86e7
...
@@ -61,3 +61,22 @@ API_EXPORT void API_CALL mk_proxy_player_play(mk_proxy_player ctx, const char *u
...
@@ -61,3 +61,22 @@ API_EXPORT void API_CALL mk_proxy_player_play(mk_proxy_player ctx, const char *u
obj
->
play
(
url_str
);
obj
->
play
(
url_str
);
});
});
}
}
API_EXPORT
void
API_CALL
mk_proxy_player_set_on_close
(
mk_proxy_player
ctx
,
on_mk_proxy_player_close
cb
,
void
*
user_data
){
assert
(
ctx
);
PlayerProxy
::
Ptr
&
obj
=
*
((
PlayerProxy
::
Ptr
*
)
ctx
);
obj
->
getPoller
()
->
async
([
obj
,
cb
,
user_data
](){
//切换线程再操作
obj
->
setOnClose
([
cb
,
user_data
](){
if
(
cb
){
cb
(
user_data
);
}
});
});
}
API_EXPORT
int
API_CALL
mk_proxy_player_total_reader_count
(
mk_proxy_player
ctx
){
assert
(
ctx
);
PlayerProxy
::
Ptr
&
obj
=
*
((
PlayerProxy
::
Ptr
*
)
ctx
);
return
obj
->
totalReaderCount
();
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论