合并pr:#1025

This commit is contained in:
ziyue
2021-08-12 16:07:31 +08:00
parent 30b139eaf0
commit 4dbe0a1d3e
26 changed files with 303 additions and 283 deletions

View File

@@ -143,10 +143,11 @@ API_EXPORT void API_CALL mk_media_set_on_close(mk_media ctx, on_mk_media_close c
typedef int(API_CALL *on_mk_media_seek)(void *user_data,uint32_t stamp_ms);
/**
* 收到客户端的pause请求时触发该回调
* 收到客户端的pause或resume请求时触发该回调
* @param user_data 用户数据指针,通过mk_media_set_on_pause设置
* @param pause 1:暂停, 0: 恢复
*/
typedef int(API_CALL* on_mk_media_pause)(void* user_data);
typedef int(API_CALL* on_mk_media_pause)(void* user_data, int pause);
/**
* 收到客户端的speed请求时触发该回调

View File

@@ -90,9 +90,9 @@ API_EXPORT void API_CALL mk_player_seekto(mk_player ctx, float progress);
/**
* 设置点播进度条
* @param ctx 对象指针
* @param seekPos 取值范围 相对于开始时间增量 单位秒
* @param seek_pos 取值范围 相对于开始时间增量 单位秒
*/
API_EXPORT void API_CALL mk_player_seektoByPos(mk_player ctx, int seekPos);
API_EXPORT void API_CALL mk_player_seekto_pos(mk_player ctx, int seek_pos);
/**
* 设置播放器开启播放结果回调函数
@@ -124,7 +124,7 @@ API_EXPORT void API_CALL mk_player_set_on_data(mk_player ctx, on_mk_play_data cb
* 获取视频codec_id -1不存在 0H2641H2652AAC 3.G711A 4.G711U
* @param ctx 播放器指针
*/
API_EXPORT int API_CALL mk_player_video_codecId(mk_player ctx);
API_EXPORT int API_CALL mk_player_video_codec_id(mk_player ctx);
/**
* 获取视频codec_id, vendor类型, 私有头数据 codec_id -1不存在 0H2641H2652AAC 3.G711A 4.G711U
@@ -133,7 +133,7 @@ API_EXPORT int API_CALL mk_player_video_codecId(mk_player ctx);
* @param head 厂家SDK头数据
* @param head 厂家SDK头数据长度
*/
API_EXPORT int API_CALL mk_player_video_codecId_vendor_head(mk_player ctx, char* vendor, char* head, int* headLen);
API_EXPORT int API_CALL mk_player_video_codec_id_vendor_head(mk_player ctx, char* vendor, char* head, int* headLen);
/**
* 获取视频宽度
@@ -154,7 +154,7 @@ API_EXPORT float API_CALL mk_player_video_fps(mk_player ctx);
* 获取音频codec_id -1不存在 0H2641H2652AAC 3.G711A 4.G711U
* @param ctx 播放器指针
*/
API_EXPORT int API_CALL mk_player_audio_codecId(mk_player ctx);
API_EXPORT int API_CALL mk_player_audio_codec_id(mk_player ctx);
/**
* 获取音频采样率

View File

@@ -76,24 +76,24 @@ protected:
return true;
}
bool seekTo(MediaSource &sender,uint32_t ui32Stamp) override{
if(!_on_seek){
bool seekTo(MediaSource &sender, uint32_t stamp) override {
if (!_on_seek) {
return false;
}
return _on_seek(_on_seek_data,ui32Stamp);
return _on_seek(_on_seek_data, stamp);
}
// 通知暂停
bool pause(MediaSource &sender) override {
if (!_on_pause)
{
// 通知暂停或恢复
bool pause(MediaSource &sender, bool pause) override {
if (!_on_pause) {
return false;
}
return _on_pause(_on_pause_data);
return _on_pause(_on_pause_data, pause);
}
//通知倍数播放
bool speed(MediaSource& sender, float speed) override {
if (!_on_speed)
{
bool speed(MediaSource &sender, float speed) override {
if (!_on_speed) {
return false;
}
return _on_speed(_on_pause_data, speed);
@@ -130,23 +130,21 @@ API_EXPORT void API_CALL mk_media_set_on_close(mk_media ctx, on_mk_media_close c
(*obj)->setOnClose(cb, user_data);
}
API_EXPORT void API_CALL mk_media_set_on_seek(mk_media ctx, on_mk_media_seek cb, void *user_data){
API_EXPORT void API_CALL mk_media_set_on_seek(mk_media ctx, on_mk_media_seek cb, void *user_data) {
assert(ctx);
MediaHelper::Ptr *obj = (MediaHelper::Ptr *) ctx;
(*obj)->setOnSeek(cb, user_data);
}
API_EXPORT void API_CALL mk_media_set_on_pause(mk_media ctx, on_mk_media_pause cb, void* user_data)
{
API_EXPORT void API_CALL mk_media_set_on_pause(mk_media ctx, on_mk_media_pause cb, void *user_data) {
assert(ctx);
MediaHelper::Ptr* obj = (MediaHelper::Ptr*) ctx;
MediaHelper::Ptr *obj = (MediaHelper::Ptr *) ctx;
(*obj)->setOnPause(cb, user_data);
}
API_EXPORT void API_CALL mk_media_set_on_speed(mk_media ctx, on_mk_media_speed cb, void* user_data)
{
API_EXPORT void API_CALL mk_media_set_on_speed(mk_media ctx, on_mk_media_speed cb, void *user_data) {
assert(ctx);
MediaHelper::Ptr* obj = (MediaHelper::Ptr*) ctx;
MediaHelper::Ptr *obj = (MediaHelper::Ptr *) ctx;
(*obj)->setOnSpeed(cb, user_data);
}

View File

@@ -171,12 +171,12 @@ API_EXPORT void API_CALL mk_player_pause(mk_player ctx, int pause) {
API_EXPORT void API_CALL mk_player_speed(mk_player ctx, float speed) {
assert(ctx);
MediaPlayerForC& obj = **((MediaPlayerForC::Ptr*)ctx);
MediaPlayerForC &obj = **((MediaPlayerForC::Ptr *) ctx);
auto player = obj.getPlayer();
player->getPoller()->async([speed, player]() {
//切换线程后再操作
player->speed(speed);
});
});
}
API_EXPORT void API_CALL mk_player_seekto(mk_player ctx, float progress) {
@@ -189,14 +189,14 @@ API_EXPORT void API_CALL mk_player_seekto(mk_player ctx, float progress) {
});
}
API_EXPORT void API_CALL mk_player_seektoByPos(mk_player ctx, int seekPos){
API_EXPORT void API_CALL mk_player_seekto_pos(mk_player ctx, int seek_pos) {
assert(ctx);
MediaPlayerForC& obj = **((MediaPlayerForC::Ptr*)ctx);
MediaPlayerForC &obj = **((MediaPlayerForC::Ptr *) ctx);
auto player = obj.getPlayer();
player->getPoller()->async([seekPos, player]() {
player->getPoller()->async([seek_pos, player]() {
//切换线程后再操作
player->seekTo((uint32_t)seekPos);
});
player->seekTo((uint32_t) seek_pos);
});
}
static void mk_player_set_on_event(mk_player ctx, on_mk_play_event cb, void *user_data, int type) {
@@ -219,30 +219,26 @@ API_EXPORT void API_CALL mk_player_set_on_data(mk_player ctx, on_mk_play_data cb
obj.setOnData(cb,user_data);
}
API_EXPORT int API_CALL mk_player_video_codecId(mk_player ctx){
API_EXPORT int API_CALL mk_player_video_codec_id(mk_player ctx){
assert(ctx);
MediaPlayerForC &obj = **((MediaPlayerForC::Ptr *)ctx);
auto track = dynamic_pointer_cast<VideoTrack>(obj->getTrack(TrackVideo));
return track ? track->getCodecId() : CodecInvalid;
}
API_EXPORT int API_CALL mk_player_video_codecId_vendor_head(mk_player ctx, char* vendor, char* head, int* head_len)
{
API_EXPORT int API_CALL mk_player_video_codec_id_vendor_head(mk_player ctx, char *vendor, char *head, int *head_len) {
assert(ctx);
MediaPlayerForC& obj = **((MediaPlayerForC::Ptr*)ctx);
MediaPlayerForC &obj = **((MediaPlayerForC::Ptr *) ctx);
auto track = dynamic_pointer_cast<VideoTrack>(obj->getTrack(TrackVideo));
int codecId = track ? track->getCodecId() : CodecInvalid;
if (codecId == CodecH264)
{
if (codecId == CodecH264) {
auto h264Track = dynamic_pointer_cast<H264Track>(obj->getTrack(TrackVideo));
auto pps = h264Track->getPps();
auto ppsLen = pps.size();
if (ppsLen >= (4 + 16))
{
if (ppsLen >= (4 + 16)) {
std::string temVendor = std::string(pps.c_str() + 4, 16);
memcpy(vendor, temVendor.c_str(), temVendor.length());
if (ppsLen > (4 + 16))
{
if (ppsLen > (4 + 16)) {
std::string temHead = std::string(pps.c_str() + 20, ppsLen - 20);
memcpy(head, temHead.c_str(), temHead.length());
*head_len = temHead.length();
@@ -273,7 +269,7 @@ API_EXPORT float API_CALL mk_player_video_fps(mk_player ctx) {
return track ? track->getVideoFps() : 0;
}
API_EXPORT int API_CALL mk_player_audio_codecId(mk_player ctx){
API_EXPORT int API_CALL mk_player_audio_codec_id(mk_player ctx){
assert(ctx);
MediaPlayerForC &obj = **((MediaPlayerForC::Ptr *)ctx);
auto track = dynamic_pointer_cast<AudioTrack>(obj->getTrack(TrackAudio));

View File

@@ -93,8 +93,8 @@ void API_CALL on_mk_play_event_func(void *user_data, int err_code, const char *e
log_debug("play success!");
ctx->media = mk_media_create("__defaultVhost__", "live", "test", 0, 0, 0);
int video_codec = mk_player_video_codecId(ctx->player);
int audio_codec = mk_player_audio_codecId(ctx->player);
int video_codec = mk_player_video_codec_id(ctx->player);
int audio_codec = mk_player_audio_codec_id(ctx->player);
if(video_codec != -1){
mk_media_init_video(ctx->media, video_codec,
mk_player_video_width(ctx->player),