mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-23 19:20:53 +08:00
feat: add mk_load_mp4_file c api(#3964)
Some checks are pending
Android / build (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Docker / build (push) Waiting to run
Linux / build (push) Waiting to run
macOS / build (push) Waiting to run
Windows / build (push) Waiting to run
Some checks are pending
Android / build (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Docker / build (push) Waiting to run
Linux / build (push) Waiting to run
macOS / build (push) Waiting to run
Windows / build (push) Waiting to run
Co-authored-by: lidaofu <lidf@ahtelit.com> Co-authored-by: xia-chu <771730766@qq.com>
This commit is contained in:
parent
61a93fab6a
commit
fdbf77d46d
@ -12,6 +12,7 @@
|
|||||||
#define MK_RECORDER_API_H_
|
#define MK_RECORDER_API_H_
|
||||||
|
|
||||||
#include "mk_common.h"
|
#include "mk_common.h"
|
||||||
|
#include "mk_util.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -124,6 +125,18 @@ API_EXPORT int API_CALL mk_recorder_start(int type, const char *vhost, const cha
|
|||||||
*/
|
*/
|
||||||
API_EXPORT int API_CALL mk_recorder_stop(int type, const char *vhost, const char *app, const char *stream);
|
API_EXPORT int API_CALL mk_recorder_stop(int type, const char *vhost, const char *app, const char *stream);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 加载mp4列表
|
||||||
|
* @param vhost 虚拟主机
|
||||||
|
* @param app app
|
||||||
|
* @param stream 流id
|
||||||
|
* @param file_path 文件路径
|
||||||
|
* @param file_repeat 循环解复用
|
||||||
|
* @param ini 配置
|
||||||
|
*/
|
||||||
|
API_EXPORT void API_CALL mk_load_mp4_file(const char *vhost, const char *app, const char *stream, const char *file_path, int file_repeat);
|
||||||
|
API_EXPORT void API_CALL mk_load_mp4_file2(const char *vhost, const char *app, const char *stream, const char *file_path, int file_repeat, mk_ini ini);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "mk_recorder.h"
|
#include "mk_recorder.h"
|
||||||
#include "Rtmp/FlvMuxer.h"
|
#include "Rtmp/FlvMuxer.h"
|
||||||
#include "Record/Recorder.h"
|
#include "Record/Recorder.h"
|
||||||
|
#include "Record/MP4Reader.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace toolkit;
|
using namespace toolkit;
|
||||||
@ -83,3 +84,36 @@ API_EXPORT int API_CALL mk_recorder_stop(int type, const char *vhost, const char
|
|||||||
assert(vhost && app && stream);
|
assert(vhost && app && stream);
|
||||||
return stopRecord((Recorder::type)type,vhost,app,stream);
|
return stopRecord((Recorder::type)type,vhost,app,stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API_EXPORT void API_CALL mk_load_mp4_file(const char *vhost, const char *app, const char *stream, const char *file_path, int file_repeat) {
|
||||||
|
mINI ini;
|
||||||
|
mk_load_mp4_file2(vhost, app, stream, file_path, file_repeat, (mk_ini)&ini);
|
||||||
|
}
|
||||||
|
|
||||||
|
API_EXPORT void API_CALL mk_load_mp4_file2(const char *vhost, const char *app, const char *stream, const char *file_path, int file_repeat, mk_ini ini) {
|
||||||
|
#if ENABLE_MP4
|
||||||
|
assert(vhost && app && stream && file_path && ini);
|
||||||
|
ProtocolOption option(*((mINI *)ini));
|
||||||
|
// mp4支持多track [AUTO-TRANSLATED:b9688762]
|
||||||
|
// mp4 supports multiple tracks
|
||||||
|
option.max_track = 16;
|
||||||
|
// 默认解复用mp4不生成mp4 [AUTO-TRANSLATED:11f2dcee]
|
||||||
|
// By default, demultiplexing mp4 does not generate mp4
|
||||||
|
option.enable_mp4 = false;
|
||||||
|
// 但是如果参数明确指定开启mp4, 那么也允许之 [AUTO-TRANSLATED:b143a9e3]
|
||||||
|
// But if the parameter explicitly specifies to enable mp4, then it is also allowed
|
||||||
|
|
||||||
|
// 强制无人观看时自动关闭 [AUTO-TRANSLATED:f7c85948]
|
||||||
|
// Force automatic shutdown when no one is watching
|
||||||
|
option.auto_close = true;
|
||||||
|
MediaTuple tuple = { vhost, app, stream, "" };
|
||||||
|
auto reader = std::make_shared<MP4Reader>(tuple, file_path, option);
|
||||||
|
// sample_ms设置为0,从配置文件加载;file_repeat可以指定,如果配置文件也指定循环解复用,那么强制开启 [AUTO-TRANSLATED:23e826b4]
|
||||||
|
// sample_ms is set to 0, loaded from the configuration file; file_repeat can be specified, if the configuration file also specifies loop demultiplexing,
|
||||||
|
// then force it to be enabled
|
||||||
|
reader->startReadMP4(0, true, file_repeat);
|
||||||
|
#else
|
||||||
|
WarnL << "MP4-related features are disabled. Please enable the ENABLE_MP4 macro and recompile.";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user