mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-10-30 16:27:36 +08:00
适配ZLToolKit
This commit is contained in:
parent
d555f6038a
commit
c12a6f0aed
@ -1 +1 @@
|
||||
Subproject commit 63d8521c31bdae6656d9ff0f5d55883618f5eaf1
|
||||
Subproject commit e7cd1f3d1ec81014f92ab844915db60bb7e34bd5
|
@ -343,7 +343,7 @@ void FFmpegSnap::makeSnap(const string &play_url, const string &save_path, float
|
||||
// FFmpeg进程退出了可以取消定时器了
|
||||
delayTask->cancel();
|
||||
// 执行回调函数
|
||||
bool success = process->exit_code() == 0 && File::fileSize(save_path.data());
|
||||
cb(success, (!success && !log_file.empty()) ? File::loadFile(log_file.data()) : "");
|
||||
bool success = process->exit_code() == 0 && File::fileSize(save_path);
|
||||
cb(success, (!success && !log_file.empty()) ? File::loadFile(log_file) : "");
|
||||
});
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ static int runChildProcess(string cmd, string log_file) {
|
||||
}
|
||||
|
||||
//重定向shell日志至文件
|
||||
auto fp = File::create_file(log_file.data(), "ab");
|
||||
auto fp = File::create_file(log_file, "ab");
|
||||
if (!fp) {
|
||||
fprintf(stderr, "open log file %s failed:%d(%s)\r\n", log_file.data(), get_uv_error(), get_uv_errmsg());
|
||||
} else {
|
||||
@ -121,7 +121,7 @@ void Process::run(const string &cmd, string log_file) {
|
||||
}
|
||||
|
||||
//重定向shell日志至文件
|
||||
auto fp = File::create_file(log_file.data(), "ab");
|
||||
auto fp = File::create_file(log_file, "ab");
|
||||
if (!fp) {
|
||||
fprintf(stderr, "open log file %s failed:%d(%s)\r\n", log_file.data(), get_uv_error(), get_uv_errmsg());
|
||||
} else {
|
||||
|
@ -1547,7 +1547,7 @@ void installWebApi() {
|
||||
}
|
||||
val["path"] = record_path;
|
||||
if (!recording) {
|
||||
val["code"] = File::delete_file(record_path.data());
|
||||
val["code"] = File::delete_file(record_path);
|
||||
return;
|
||||
}
|
||||
File::scanDir(record_path, [](const string &path, bool is_dir) {
|
||||
@ -1555,7 +1555,7 @@ void installWebApi() {
|
||||
return true;
|
||||
}
|
||||
if (path.find("./") != std::string::npos) {
|
||||
File::delete_file(path.data());
|
||||
File::delete_file(path);
|
||||
} else {
|
||||
TraceL << "Ignore tmp mp4 file: " << path;
|
||||
}
|
||||
@ -1608,7 +1608,7 @@ void installWebApi() {
|
||||
static bool s_snap_success_once = false;
|
||||
StrCaseMap headerOut;
|
||||
GET_CONFIG(string, defaultSnap, API::kDefaultSnap);
|
||||
if (!File::fileSize(snap_path.data())) {
|
||||
if (!File::fileSize(snap_path)) {
|
||||
if (!err_msg.empty() && (!s_snap_success_once || defaultSnap.empty())) {
|
||||
//重来没截图成功过或者默认截图图片为空,那么直接返回FFmpeg错误日志
|
||||
headerOut["Content-Type"] = HttpFileManager::getContentType(".txt");
|
||||
@ -1670,7 +1670,7 @@ void installWebApi() {
|
||||
if (!have_old_snap) {
|
||||
//无过期截图,生成一个空文件,目的是顺便创建文件夹路径
|
||||
//同时防止在FFmpeg生成截图途中不停的尝试调用该api多次启动FFmpeg进程
|
||||
auto file = File::create_file(new_snap.data(), "wb");
|
||||
auto file = File::create_file(new_snap, "wb");
|
||||
if (file) {
|
||||
fclose(file);
|
||||
}
|
||||
@ -1681,10 +1681,10 @@ void installWebApi() {
|
||||
FFmpegSnap::makeSnap(allArgs["url"], new_snap_tmp, allArgs["timeout_sec"], [invoker, allArgs, new_snap, new_snap_tmp](bool success, const string &err_msg) {
|
||||
if (!success) {
|
||||
//生成截图失败,可能残留空文件
|
||||
File::delete_file(new_snap_tmp.data());
|
||||
File::delete_file(new_snap_tmp);
|
||||
} else {
|
||||
//临时文件改成正式文件
|
||||
File::delete_file(new_snap.data());
|
||||
File::delete_file(new_snap);
|
||||
rename(new_snap_tmp.data(), new_snap.data());
|
||||
}
|
||||
responseSnap(new_snap, allArgs.getParser().getHeader(), invoker, err_msg);
|
||||
|
@ -263,7 +263,7 @@ int start_main(int argc,char *argv[]) {
|
||||
//加载配置文件,如果配置文件不存在就创建一个
|
||||
loadIniConfig(g_ini_file.data());
|
||||
|
||||
if (!File::is_dir(ssl_file.data())) {
|
||||
if (!File::is_dir(ssl_file)) {
|
||||
//不是文件夹,加载证书,证书包含公钥和私钥
|
||||
SSL_Initor::Instance().loadCertificate(ssl_file.data());
|
||||
} else {
|
||||
|
@ -25,7 +25,7 @@ void HttpDownloader::startDownload(const string &url, const string &file_path, b
|
||||
if (_file_path.empty()) {
|
||||
_file_path = exeDir() + "HttpDownloader/" + MD5(url).hexdigest();
|
||||
}
|
||||
_save_file = File::create_file(_file_path.data(), append ? "ab" : "wb");
|
||||
_save_file = File::create_file(_file_path, append ? "ab" : "wb");
|
||||
if (!_save_file) {
|
||||
auto strErr = StrPrinter << "打开文件失败:" << file_path << endl;
|
||||
throw std::runtime_error(strErr);
|
||||
|
@ -192,7 +192,7 @@ static bool makeFolderMenu(const string &httpPath, const string &strFullPath, st
|
||||
last_dir_name = split(strPathPrefix, "/").back();
|
||||
}
|
||||
|
||||
if (!File::is_dir(strPathPrefix.data())) {
|
||||
if (!File::is_dir(strPathPrefix)) {
|
||||
return false;
|
||||
}
|
||||
stringstream ss;
|
||||
@ -250,7 +250,7 @@ static bool makeFolderMenu(const string &httpPath, const string &strFullPath, st
|
||||
int i = 0;
|
||||
for (auto &pr :file_map) {
|
||||
auto &strAbsolutePath = pr.second.second;
|
||||
bool isDir = File::is_dir(strAbsolutePath.data());
|
||||
bool isDir = File::is_dir(strAbsolutePath);
|
||||
ss << "<li><span>" << i++ << "</span>\t";
|
||||
ss << "<a href=\"";
|
||||
//路径链接地址
|
||||
@ -271,7 +271,7 @@ static bool makeFolderMenu(const string &httpPath, const string &strFullPath, st
|
||||
continue;
|
||||
}
|
||||
//是文件
|
||||
auto fileSize = File::fileSize(strAbsolutePath.data());
|
||||
auto fileSize = File::fileSize(strAbsolutePath);
|
||||
if (fileSize < 1024) {
|
||||
ss << " (" << fileSize << "B)" << endl;
|
||||
} else if (fileSize < 1024 * 1024) {
|
||||
@ -467,7 +467,7 @@ static string pathCat(const string &a, const string &b){
|
||||
*/
|
||||
static void accessFile(Session &sender, const Parser &parser, const MediaInfo &media_info, const string &file_path, const HttpFileManager::invoker &cb) {
|
||||
bool is_hls = end_with(file_path, kHlsSuffix) || end_with(file_path, kHlsFMP4Suffix);
|
||||
if (!is_hls && !File::fileExist(file_path.data())) {
|
||||
if (!is_hls && !File::fileExist(file_path)) {
|
||||
//文件不存在且不是hls,那么直接返回404
|
||||
sendNotFound(cb);
|
||||
return;
|
||||
@ -628,12 +628,12 @@ void HttpFileManager::onAccessPath(Session &sender, Parser &parser, const HttpFi
|
||||
return;
|
||||
}
|
||||
//访问的是文件夹
|
||||
if (File::is_dir(file_path.data())) {
|
||||
if (File::is_dir(file_path)) {
|
||||
auto indexFile = searchIndexFile(file_path);
|
||||
if (!indexFile.empty()) {
|
||||
// 发现该文件夹下有index文件
|
||||
file_path = pathCat(file_path, indexFile);
|
||||
if (!File::is_dir(file_path.data())) {
|
||||
if (!File::is_dir(file_path)) {
|
||||
// 不是文件夹
|
||||
parser.setUrl(pathCat(parser.url(), indexFile));
|
||||
accessFile(sender, parser, media_info, file_path, cb);
|
||||
|
@ -85,10 +85,10 @@ void MP4Recorder::asyncClose() {
|
||||
TraceL << "Closed tmp mp4 file: " << full_path_tmp;
|
||||
if (!full_path_tmp.empty()) {
|
||||
// 获取文件大小
|
||||
info.file_size = File::fileSize(full_path_tmp.data());
|
||||
info.file_size = File::fileSize(full_path_tmp);
|
||||
if (info.file_size < 1024) {
|
||||
// 录像文件太小,删除之
|
||||
File::delete_file(full_path_tmp.data());
|
||||
File::delete_file(full_path_tmp);
|
||||
return;
|
||||
}
|
||||
// 临时文件名改成正式文件名,防止mp4未完成时被访问
|
||||
|
@ -174,7 +174,7 @@ void FlvRecorder::startRecord(const EventPoller::Ptr &poller, const RtmpMediaSou
|
||||
}
|
||||
});
|
||||
//新建文件
|
||||
_file.reset(File::create_file(file_path.data(), "wb"), [fileBuf](FILE *fp) {
|
||||
_file.reset(File::create_file(file_path, "wb"), [fileBuf](FILE *fp) {
|
||||
if (fp) {
|
||||
fflush(fp);
|
||||
fclose(fp);
|
||||
|
@ -33,7 +33,7 @@ RtpProcess::RtpProcess(const string &stream_id) {
|
||||
|
||||
GET_CONFIG(string, dump_dir, RtpProxy::kDumpDir);
|
||||
{
|
||||
FILE *fp = !dump_dir.empty() ? File::create_file(File::absolutePath(_media_info.stream + ".rtp", dump_dir).data(), "wb") : nullptr;
|
||||
FILE *fp = !dump_dir.empty() ? File::create_file(File::absolutePath(_media_info.stream + ".rtp", dump_dir), "wb") : nullptr;
|
||||
if (fp) {
|
||||
_save_file_rtp.reset(fp, [](FILE *fp) {
|
||||
fclose(fp);
|
||||
@ -42,7 +42,7 @@ RtpProcess::RtpProcess(const string &stream_id) {
|
||||
}
|
||||
|
||||
{
|
||||
FILE *fp = !dump_dir.empty() ? File::create_file(File::absolutePath(_media_info.stream + ".video", dump_dir).data(), "wb") : nullptr;
|
||||
FILE *fp = !dump_dir.empty() ? File::create_file(File::absolutePath(_media_info.stream + ".video", dump_dir), "wb") : nullptr;
|
||||
if (fp) {
|
||||
_save_file_video.reset(fp, [](FILE *fp) {
|
||||
fclose(fp);
|
||||
|
@ -138,7 +138,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
auto parse_urls = [&]() {
|
||||
// 获取输入源列表
|
||||
auto inputs = ::split(toolkit::File::loadFile(in_urls.c_str()), "\n");
|
||||
auto inputs = ::split(toolkit::File::loadFile(in_urls), "\n");
|
||||
for(auto &url : inputs){
|
||||
if(url.empty() || url.find("://") == std::string::npos) {
|
||||
continue;
|
||||
@ -147,7 +147,7 @@ int main(int argc, char *argv[]) {
|
||||
input_urls.emplace_back(input_url);
|
||||
}
|
||||
// 获取输出源列表
|
||||
auto outputs = ::split(toolkit::File::loadFile(out_urls.c_str()), "\n");
|
||||
auto outputs = ::split(toolkit::File::loadFile(out_urls), "\n");
|
||||
for(auto &url : outputs){
|
||||
if(url.empty() || url.find("://") == std::string::npos){
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user