xref: /OK3568_Linux_fs/external/rknpu2/examples/3rdparty/zlmediakit/include/mk_player.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit).
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Use of this source code is governed by MIT license that can be found in the
7*4882a593Smuzhiyun  * LICENSE file in the root of the source tree. All contributing project authors
8*4882a593Smuzhiyun  * may be found in the AUTHORS file in the root of the source tree.
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #ifndef MK_PLAYER_H_
12*4882a593Smuzhiyun #define MK_PLAYER_H_
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #include "mk_common.h"
15*4882a593Smuzhiyun #include "mk_frame.h"
16*4882a593Smuzhiyun #include "mk_track.h"
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #ifdef __cplusplus
19*4882a593Smuzhiyun extern "C" {
20*4882a593Smuzhiyun #endif
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun typedef void* mk_player;
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun /**
25*4882a593Smuzhiyun  * 播放结果或播放中断事件的回调
26*4882a593Smuzhiyun  * @param user_data 用户数据指针
27*4882a593Smuzhiyun  * @param err_code 错误代码,0为成功
28*4882a593Smuzhiyun  * @param err_msg 错误提示
29*4882a593Smuzhiyun  * @param tracks track列表
30*4882a593Smuzhiyun  * @param track_count track个数
31*4882a593Smuzhiyun  */
32*4882a593Smuzhiyun typedef void(API_CALL *on_mk_play_event)(void *user_data, int err_code, const char *err_msg, mk_track tracks[],
33*4882a593Smuzhiyun                                          int track_count);
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /**
36*4882a593Smuzhiyun  * 创建一个播放器,支持rtmp[s]/rtsp[s]
37*4882a593Smuzhiyun  * @return 播放器指针
38*4882a593Smuzhiyun  */
39*4882a593Smuzhiyun API_EXPORT mk_player API_CALL mk_player_create();
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /**
42*4882a593Smuzhiyun  * 销毁播放器
43*4882a593Smuzhiyun  * @param ctx 播放器指针
44*4882a593Smuzhiyun  */
45*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_release(mk_player ctx);
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /**
48*4882a593Smuzhiyun  * 设置播放器配置选项
49*4882a593Smuzhiyun  * @param ctx 播放器指针
50*4882a593Smuzhiyun  * @param key 配置项键,支持 net_adapter/rtp_type/rtsp_user/rtsp_pwd/protocol_timeout_ms/media_timeout_ms/beat_interval_ms/wait_track_ready
51*4882a593Smuzhiyun  * @param val 配置项值,如果是整形,需要转换成统一转换成string
52*4882a593Smuzhiyun  */
53*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_set_option(mk_player ctx, const char *key, const char *val);
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /**
56*4882a593Smuzhiyun  * 开始播放url
57*4882a593Smuzhiyun  * @param ctx 播放器指针
58*4882a593Smuzhiyun  * @param url rtsp[s]/rtmp[s] url
59*4882a593Smuzhiyun  */
60*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_play(mk_player ctx, const char *url);
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun /**
63*4882a593Smuzhiyun  * 暂停或恢复播放,仅对点播有用
64*4882a593Smuzhiyun  * @param ctx 播放器指针
65*4882a593Smuzhiyun  * @param pause 1:暂停播放,0:恢复播放
66*4882a593Smuzhiyun  */
67*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_pause(mk_player ctx, int pause);
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun /**
70*4882a593Smuzhiyun  * 倍数播放,仅对点播有用
71*4882a593Smuzhiyun  * @param ctx 播放器指针
72*4882a593Smuzhiyun  * @param speed 0.5 1.0 2.0
73*4882a593Smuzhiyun  */
74*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_speed(mk_player ctx, float speed);
75*4882a593Smuzhiyun 
76*4882a593Smuzhiyun /**
77*4882a593Smuzhiyun  * 设置点播进度条
78*4882a593Smuzhiyun  * @param ctx 对象指针
79*4882a593Smuzhiyun  * @param progress 取值范围未 0.0~1.0
80*4882a593Smuzhiyun  */
81*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_seekto(mk_player ctx, float progress);
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun /**
84*4882a593Smuzhiyun  * 设置点播进度条
85*4882a593Smuzhiyun  * @param ctx 对象指针
86*4882a593Smuzhiyun  * @param seek_pos 取值范围 相对于开始时间增量 单位秒
87*4882a593Smuzhiyun  */
88*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_seekto_pos(mk_player ctx, int seek_pos);
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun /**
91*4882a593Smuzhiyun  * 设置播放器开启播放结果回调函数
92*4882a593Smuzhiyun  * @param ctx 播放器指针
93*4882a593Smuzhiyun  * @param cb 回调函数指针,设置null立即取消回调
94*4882a593Smuzhiyun  * @param user_data 用户数据指针
95*4882a593Smuzhiyun  */
96*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_set_on_result(mk_player ctx, on_mk_play_event cb, void *user_data);
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun /**
99*4882a593Smuzhiyun  * 设置播放被异常中断的回调
100*4882a593Smuzhiyun  * @param ctx 播放器指针
101*4882a593Smuzhiyun  * @param cb 回调函数指针,设置null立即取消回调
102*4882a593Smuzhiyun  * @param user_data 用户数据指针
103*4882a593Smuzhiyun  */
104*4882a593Smuzhiyun API_EXPORT void API_CALL mk_player_set_on_shutdown(mk_player ctx, on_mk_play_event cb, void *user_data);
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun ///////////////////////////获取音视频相关信息接口在播放成功回调触发后才有效///////////////////////////////
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun /**
109*4882a593Smuzhiyun  * 获取点播节目时长,如果是直播返回0,否则返回秒数
110*4882a593Smuzhiyun  */
111*4882a593Smuzhiyun API_EXPORT float API_CALL mk_player_duration(mk_player ctx);
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun /**
114*4882a593Smuzhiyun  * 获取点播播放进度,取值范围 0.0~1.0
115*4882a593Smuzhiyun  */
116*4882a593Smuzhiyun API_EXPORT float API_CALL mk_player_progress(mk_player ctx);
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun /**
119*4882a593Smuzhiyun  * 获取点播播放进度位置,取值范围 相对于开始时间增量 单位秒
120*4882a593Smuzhiyun  */
121*4882a593Smuzhiyun API_EXPORT int API_CALL mk_player_progress_pos(mk_player ctx);
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun /**
124*4882a593Smuzhiyun  * 获取丢包率,rtsp时有效
125*4882a593Smuzhiyun  * @param ctx 对象指针
126*4882a593Smuzhiyun  * @param track_type 0:视频,1:音频
127*4882a593Smuzhiyun  */
128*4882a593Smuzhiyun API_EXPORT float API_CALL mk_player_loss_rate(mk_player ctx, int track_type);
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun #ifdef __cplusplus
131*4882a593Smuzhiyun }
132*4882a593Smuzhiyun #endif
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun #endif /* MK_PLAYER_H_ */
135