From c9c44c9d84400ee1da1bf02f317f915100d3821b Mon Sep 17 00:00:00 2001 From: GitM2lin <71369414+lin-lai@users.noreply.github.com> Date: Thu, 14 Sep 2023 10:28:38 +0800 Subject: [PATCH] 4.1 --- Makefile | 68 +++ func/UpDownFile.cpp | 168 +++++++ func/VideoHandle.cpp | 410 ++++++++++++++++++ include/UpDownFile.h | 13 + include/VideoHandle.h | 11 + include/myhead.h | 61 +++ main | Bin 0 -> 707096 bytes main.cpp | 262 +++++++++++ ...4\346\230\216\346\226\207\346\241\243.txt" | 25 ++ 9 files changed, 1018 insertions(+) create mode 100644 Makefile create mode 100644 func/UpDownFile.cpp create mode 100644 func/VideoHandle.cpp create mode 100644 include/UpDownFile.h create mode 100644 include/VideoHandle.h create mode 100644 include/myhead.h create mode 100644 main create mode 100644 main.cpp create mode 100644 "\350\257\264\346\230\216\346\226\207\346\241\243.txt" diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..cdf233d --- /dev/null +++ b/Makefile @@ -0,0 +1,68 @@ +# 注意一定要在书写命令时,必须在命令开头敲一个Tab键,而不能使用4个空格(space)来代替Tab +# 这个模板,以后只需要更改文件名和链接文件夹即可!!! +# 惨痛教训,链接的时候要加上库:@g++ $(OBJS_C) $(OBJS_CPP) -o $(TARGET) -lcurl + +# 根路径 +ROOT := $(shell pwd) + +# --------------------------修改区---------------------- +# 添加链接编译文件的文件夹,有.cpp文件 +SUBDIR := $(ROOT) +SUBDIR += $(ROOT)/func +SUBDIR += $(ROOT)/data + +# 生成可执行程序的文件名 +TARGET := main +# TARGET := test1 + +# 保存生成文件的文件夹 +OUTPUT := ./output + +# JSON 头文件路径 +JSON_INCLUDE := /home/lb/mylib/json-develop/include/ # 将路径替换为你的 json.hpp 所在位置 + +# ----------------------------------------------------- + +# 编译文件夹 +INCS := $(foreach dir,$(SUBDIR),-I$(dir)) +INCS += -I$(JSON_INCLUDE) # 添加 JSON 头文件路径 + +# 筛选出c文件名,链接需要 +SRCS_C := $(foreach dir,$(SUBDIR),$(wildcard $(dir)/*.c)) +SRCS_CPP := $(foreach dir,$(SUBDIR),$(wildcard $(dir)/*.cpp)) +# 筛选出c++文件名,链接需要 +OBJS_C := $(patsubst $(ROOT)/%.c,$(OUTPUT)/%.o,$(SRCS_C)) +OBJS_CPP := $(patsubst $(ROOT)/%.cpp,$(OUTPUT)/%.o,$(SRCS_CPP)) + + +# g++ 提供了强大的自动生成依赖,记录有依赖关系的 *.d 文件————不用手动为每个源文件添加头文件依赖 +DEPS := $(patsubst %.o,%.d,$(OBJS_C)) +DEPS += $(patsubst %.o,%.d,$(OBJS_CPP)) + +# 开始链接 +main : $(OBJS_C) $(OBJS_CPP) + @echo linking... + @g++ $(OBJS_C) $(OBJS_CPP) -o $(TARGET) -lcurl -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy + @echo complete! + +# c编译 +$(OUTPUT)/%.o : %.c + @echo C compile $<... + @mkdir -p $(dir $@) + @gcc -MMD -MP -c $(INCS) $< -o $@ -lsocket -lnetwork -lcurl + +# C++编译 +$(OUTPUT)/%.o : %.cpp + @echo C++ compile $<... + @mkdir -p $(dir $@) + @g++ -std=c++11 -MMD -MP -c $(INCS) $< -o $@ -lsocket -lnetwork -lcurl -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_legacy + +# 删除过程文件 +.PHONY : clean + +clean: + @echo try to clean... + @rm -r $(OUTPUT) + @echo complete! + +-include $(DEPS) diff --git a/func/UpDownFile.cpp b/func/UpDownFile.cpp new file mode 100644 index 0000000..8005c62 --- /dev/null +++ b/func/UpDownFile.cpp @@ -0,0 +1,168 @@ +#include "../include/myhead.h" + +/** + * 上传文件 服务器 + * //开始写入 服务器检测STF标志位 + * //结束写入 服务器检测EOF标志位 + * 直接写入 + * + * + * 解决粘包 + * 粘包 + * 发生端发送2个小数据包,接收端会一次性接收到这两个字符串,并将它们合并成一个较大的数据包 + * 解决方法 + * 消息前缀是一个4字节的整数,用于表示消息的长度 + * 每次取数据步骤 + * 1.先取4字节的消息前缀 + * 2.按照消息前缀去取数据,根据长度来准确切割消息 + * + */ +int UpLoadFile(int clientSocket, char *strFileName) +{ + printf("客户端%d 上传任务\n", clientSocket); + // 参数判断 + if (clientSocket < 0 || NULL == strFileName || strlen(strFileName) <= 0) + { + return -1; + } + + // 从传输开始标志位STF起写入文件 + // 连接-绝对路径 + char str_file[512]; + const char *base_path = DATA_PATH; + strcpy(str_file, base_path); + strcat(str_file, strFileName); + printf("客户端%d 服务器保存位置:%s\n", clientSocket, str_file); + + // 打开本地文件以保存下载内容 + FILE *file = fopen(str_file, "wb"); + if (!file) + { + printf("客户端%d ", clientSocket); + perror("打开本地文件失败"); + return -1; + } + + // recv and fwrite + int iRet = -1; + char *buf = new char[BUF_SIZE_VIDEO](); + memset(buf, 0, BUF_SIZE_VIDEO); + while ((iRet = recv(clientSocket, buf, BUF_SIZE_VIDEO, 0)) > 0) + { + fwrite(buf, 1, iRet, file); + memset(buf, 0, iRet); + } + + + // 检测 + if (iRet==0) + { + printf("客户端%d 文件上传成功\n", clientSocket); + } + else + { + printf("客户端%d 接收数据失败\n",clientSocket); + fclose(file); + delete[] buf; + return -1; + } + + // 关闭资源 + fclose(file); + delete[] buf; + return 0; +} + +/** + * 下载文件 服务器 + * 开始传输 服务器发送STF标志位 + * 结束传输 服务器发送EOF标志位 + */ +int DownLoadFile(int clientSocket, char *strFileName) +{ + const char *stfFlag = "STF"; // 定义文件开始传输标志位 + const char *eofFlag = "EOF"; // 定义文件结束传输标志位 + + printf("客户端%d 下载任务\n", clientSocket); + if (clientSocket < 0 || NULL == strFileName || strlen(strFileName) <= 0) + { + perror("非法参数\n"); + return -1; + } + // send file size to client + + // 查找并删除末尾的换行符--客户端处理 + size_t len = strlen(strFileName); + if (len > 0 && strFileName[len - 1] == '\n') + { + strFileName[len - 1] = '\0'; // 将换行符替换为字符串终止符 + } + + // 绝对路径 + char str_file[512]; + const char *base_path = DATA_PATH; + strcpy(str_file, base_path); + strcat(str_file, strFileName); + + struct stat stBuf; + memset(&stBuf, 0, sizeof(struct stat)); + if (-1 == stat(str_file, &stBuf)) + { + perror("错误"); + printf("客户端%d 数据检测失败:%s\n", clientSocket, str_file); + return -1; + } + + char *buf = new char[BUF_SIZE_VIDEO](); + memset(buf, 0, BUF_SIZE_VIDEO); + + // 发送一个传输开始标志位STF + if (send(clientSocket, stfFlag, strlen(stfFlag), 0) == -1) + { + perror("发送 STF 标志位失败"); + // 处理发送失败的情况——断开连接 + delete[] buf; + return -1; + } + printf("客户端%d 发送传输标志位 %s\n", clientSocket, stfFlag); + + // 打开文件 + FILE *file = fopen(str_file, "rb"); + if (!file) + { + printf("客户端%d 打开 %s 文件失败\n", clientSocket, str_file); + fclose(file); + delete[] buf; + return -1; + } + // read and send + int iRet = -1; + printf("客户端%d 开始发送...\n", clientSocket); + + while ((iRet = fread(buf, 1, BUF_SIZE_VIDEO, file)) > 0) + { + // send + if (-1 == send(clientSocket, buf, iRet, 0)) + { + perror("Error sending data"); + break; + } + // printf("客户端%d:发送数据 %s\n", clientSocket, buf); + memset(buf, 0, BUF_SIZE_VIDEO); + } + printf("客户端%d 发送成功\n", clientSocket); + + // 发送一个传输结束标志位EOF + if (send(clientSocket, eofFlag, strlen(eofFlag), 0) == -1) + { + perror("发送 EOF 标志位失败"); + // 处理发送失败的情况——断开连接 + fclose(file); + delete[] buf; + return -1; + } + + fclose(file); + delete[] buf; + return 0; +} diff --git a/func/VideoHandle.cpp b/func/VideoHandle.cpp new file mode 100644 index 0000000..1c12647 --- /dev/null +++ b/func/VideoHandle.cpp @@ -0,0 +1,410 @@ +#include "../include/myhead.h" + +using namespace std; +using json = nlohmann::json; + +/* + 视频处理模块 +*/ + +// 编写hls的index.m3u8文件---等待编写 +void write_m3u8(const std::string &directoryPath) +{ + printf("子进程%d write_m3u8:编写index.m3u8文件,文件保存路径 %s\n", getpid(), directoryPath.c_str()); +} + +// 创建文件夹 +bool createDirRecs(const std::string &path) +{ + // 如果路径为空或已经存在,返回 true + // 0644:对于所有者具有读和写权限,对于组和其他用户,只有读权限 + int ret = mkdir(path.c_str(), 0755); + if (ret == 0) + { + // 如果创建成功或目录已经存在,返回 true + return true; + } + else + { + // 已存在 + if (errno == EEXIST) + { + return true; + } + // 创建失败 + return false; + } +} + +// 去除文件后缀 +std::string removeFileExtension(const std::string &fileName) +{ + size_t lastDotPos = fileName.rfind('.'); + if (lastDotPos != std::string::npos) + { + return fileName.substr(0, lastDotPos); + } + else + { + return fileName; // 如果没有找到点,返回原始文件名 + } +} + +// 函数用于获取目录下所有的.ts文件 +std::vector getTsFiles(const std::string &dirPath) +{ + std::vector tsFiles; + DIR *dp = opendir(dirPath.c_str()); // 打开目录 + + if (dp) + { + struct dirent *entry; + + // 遍历目录中的文件和子目录 + while ((entry = readdir(dp))) + { + std::string filename = entry->d_name; + + // 检查文件扩展名是否是 .ts + if (filename.length() >= 3 && filename.substr(filename.length() - 3) == ".ts") + { + tsFiles.push_back(filename); + } + } + + closedir(dp); // 关闭目录 + } + + return tsFiles; +} +// curl回调函数,用于处理接收到的响应数据 +size_t WriteCallback(void *contents, size_t size, size_t nmemb, std::string *output) +{ + size_t totalSize = size * nmemb; + output->append(static_cast(contents), totalSize); + return totalSize; +} + +int curl_request_file(CURL *curl, const std::string &input_dir, std::string &response) +{ + // 设置要上传的文件 + const char *file_path = input_dir.c_str(); + // 创建一个文件读取句柄 + FILE *file = fopen(file_path, "rb"); + if (!file) + { + std::cerr << "Failed to open file: " << file_path << std::endl; + curl_easy_cleanup(curl); + return 1; + } + curl_easy_setopt(curl, CURLOPT_READDATA, file); + // 执行HTTP请求 + CURLcode res = curl_easy_perform(curl); + if (res != CURLE_OK) + { + std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; + return -1; + } + return 0; +} + +// 处理视频并添加目标框 +int processVideoBox(const string &inputVideoPath, const string &outputVideoPath, const json &targetData) +{ + cv::VideoCapture videoCapture(inputVideoPath); + if (!videoCapture.isOpened()) + { + cerr << "Error: Failed to open input video." << endl; + return -1; + } + + double fps = videoCapture.get(CV_CAP_PROP_FPS); + int frameWidth = static_cast(videoCapture.get(CV_CAP_PROP_FRAME_WIDTH)); + int frameHeight = static_cast(videoCapture.get(CV_CAP_PROP_FRAME_HEIGHT)); + + cv::VideoWriter videoWriter(outputVideoPath, CV_FOURCC('X', 'V', 'I', 'D'), fps, cv::Size(frameWidth, frameHeight)); + + if (!videoWriter.isOpened()) + { + cerr << "Error: Failed to open output video for writing." << endl; + return -1; + } + + json::const_iterator emotionData = targetData.begin(); + cv::Mat frame; + + int index = 0; + while (true) + { + videoCapture >> frame; + if (frame.empty()) + { + break; + } + const string &emotion = (*emotionData)[0].get(); + const json &boundingBoxes = (*emotionData)[1]; + // const auto &boundingBox = boundingBoxes[index]; + const auto &boundingBox = boundingBoxes.at(index); + + // 如果已经处理完所有数据,不画框但写入 + if (index >= boundingBoxes.size()) + { + videoWriter.write(frame); + continue; + } + + vector bbox = boundingBox.get>(); + int left = bbox[0]; + int right = bbox[1]; + int top = bbox[2]; + int bottom = bbox[3]; + + cv::rectangle(frame, cv::Point(left, top), cv::Point(right, bottom), cv::Scalar(0, 255, 0), 2); + cv::putText(frame, emotion, cv::Point(left + 120, top - 10), cv::FONT_HERSHEY_SIMPLEX, 0.8, cv::Scalar(0, 255, 0), 2); + + index++; + + videoWriter.write(frame); + } + + videoCapture.release(); + videoWriter.release(); + + return 0; +} + +// 完全拷贝 +int cp_file(const std::string& old_file, const std::string& new_file) { + std::ifstream source(old_file, std::ios::binary); + if (!source) { + std::cerr << "无法打开源文件:" << old_file << std::endl; + return -1; + } + + std::ofstream destination(new_file, std::ios::binary); + if (!destination) { + std::cerr << "无法创建目标文件:" << new_file << std::endl; + return -1; + } + + destination << source.rdbuf(); + + if (source.fail() || destination.fail()) { + std::cerr << "文件拷贝失败" << std::endl; + return -1; + } + + source.close(); + destination.close(); + + std::cout << "文件拷贝成功" << std::endl; + return 0; +} + +// 发送API+合成视频---等待编写 +int curl_API_all(const std::string &input_dir, const std::string &output_dir) +{ + printf("子进程%d curl_API_all:发送API与合成视频\n", getpid()); + printf("子进程%d curl_API_all:input_dir:%s\n", getpid(), input_dir.c_str()); + printf("子进程%d curl_API_all:output_dir:%s\n", getpid(), output_dir.c_str()); + + // 创建合成视频文件夹 + if (createDirRecs(output_dir)) + { + std::cout << "子进程" << getpid() << " 存放合成视频文件夹创建成功或已存在:" << output_dir.c_str() << std::endl; + } + else + { + std::cerr << "子进程" << getpid() << " 创建合成视频文件夹失败" << std::endl; + return -1; + } + + // 获取源文件夹下所有ts文件组成一个列表 + std::vector tsFiles = getTsFiles(input_dir); + + // 打印所有找到的.ts文件 + std::cout << "子进程" << getpid() << " 生成的ts数量:" << tsFiles.size() << std::endl; + + /* + API + */ + // 初始化libcurl + curl_global_init(CURL_GLOBAL_DEFAULT); // 启用线程安全(支持多线程环境)和设置一些库的全局状态 + CURL *curl = curl_easy_init(); + + if (!curl) + { + std::cout << "子进程" << getpid() << " 初始化libcurl失败" << std::endl; + curl_global_cleanup(); + return -1; + } + // 设置要访问的URL + // const char *url = "http://192.168.12.41:30088/predictions/IDB-emo-video"; + const char *url = "http://192.168.3.108:30088/predictions/IDB-emo-video"; + + // 获取的响应 + std::string response; + + // 设置libcurl选项 + curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); + curl_easy_setopt(curl, CURLOPT_URL, url); + // 设置写回调函数,用于接收响应数据 + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); + + std::string old_ts_file; + std::string new_ts_file; + + // 循环作为参数发送 + for (const std::string &tsFile : tsFiles) + { + old_ts_file = input_dir + tsFile; + new_ts_file = output_dir + tsFile; + + int ret = curl_request_file(curl, old_ts_file, response); + + if (ret == 0) + { + std::cout << "子进程" << getpid() << " " << tsFile << " 请求成功" << std::endl; + } + else + { + std::cout << "子进程" << getpid() << " " << tsFile << " 请求失败" << std::endl; + } + + // 解析 JSON 字符串 + json data = json::parse(response); + + // 打印解析结果 + // std::cout << "Emotion: " << data[0][0].get() << std::endl; + // std::cout << "Coordinates:" << std::endl; + // for (const auto &item : data[0][1]) + // { + // std::cout << " [" << item[0] << ", " << item[1] << ", " << item[2] << ", " << item[3] << "]" << std::endl; + // } + + // 生成视频 + try + { + int result = processVideoBox(old_ts_file, new_ts_file, data); + if (result == 0) + { + std::cout << "子进程" << getpid() << " " << tsFile << " 合成视频成功 " + << "新视频路径:" << new_ts_file.c_str() << std::endl; + } + else + { + std::cout << "子进程" << getpid() << " " << tsFile << " 合成视频失败" << std::endl; + } + + // 清空响应数据以准备下一次请求 + response.clear(); + } + catch (const std::exception &e) + { + int ret = cp_file(old_ts_file, new_ts_file);//完全拷贝 + std::cout << "子进程" << getpid() << " " << tsFile << " 合成视频失败,完全拷贝成功" << std::endl; + + } + + // 先只执行一个 + // break; + } + + // 清理和关闭 CURL + curl_easy_cleanup(curl); + curl_global_cleanup(); + + return 0; +} + +/** + * 当前模块主函数 + */ +int handle_video(char *strFileName, char *file_m3u8_path) +{ + printf("系统:开始处理视频\n"); + + // if (strFileName == NULL || file_m3u8_path == NULL || strlen(strFileName) == 0 || strlen(file_m3u8_path) == 0) + if (strFileName == NULL || strlen(strFileName) == 0) + { + // 一个或多个参数不能为空 或 空字符串 + printf("系统:视频处理模块:无效参数\n"); + return -1; + } + + // 文件的绝对路径 + std::string data_path = DATA_PATH; + std::string fileName(strFileName); + std::string input_file_path = data_path + fileName; // 输入文件路径 + std::string new_dir = data_path + removeFileExtension(fileName) + "/"; + std::string output_file_path = new_dir + "index.m3u8"; // 输出文件路径 + + // 创建新文件夹 + if (createDirRecs(new_dir)) + { + std::cout << "系统:存放m3u8文件夹创建成功或已存在:" << new_dir.c_str() << std::endl; + } + else + { + std::cerr << "系统:创建文件夹失败" << std::endl; + return -1; + } + + printf("系统:待处理视频路径 %s\n", input_file_path.c_str()); + printf("系统:输出原视频m3u8文件路径 %s\n", output_file_path.c_str()); + + // return 0; + + // 创建子线程,用execlp()调用ffmpeg处理视频 + pid_t child_pid = fork(); + if (child_pid == 0) + { + // 子进程 + printf("子进程%d:开始视频转HLS流文件...\n", getpid()); + + // 获取程序开始执行的时间点 + auto start_time = std::chrono::high_resolution_clock::now(); + + // 需要linux的FFmpeg环境 + // execlp("ffmpeg", "ffmpeg", "-i", input_file_path.c_str(), + // "-force_key_frames", "expr:gte(t,n_forced*1)", "-strict", "-1", + // "-c:a", "aac", "-c:v", "libx264", "-hls_time", "1", + // "-f", "hls", output_file_path.c_str(), NULL); + sleep(3); + + printf("子进程%d:转化完成\n", getpid()); + + // 生成index.m3u8文件 + write_m3u8(output_file_path); + + // 使用循环发送API获取识别结果 + std::string output_dir = DATA_PATH; // 合成视频的结果目录 + output_dir.append("output_video/"); + createDirRecs(output_dir); + output_dir += removeFileExtension(fileName) + "/"; + + // API + curl_API_all(new_dir, output_dir); + + printf("子进程%d 输出识别后视频m3u8文件路径 %s\n", getpid(), output_dir.c_str()); + strcpy(file_m3u8_path, output_dir.c_str()); + + // 子进程执行完命令后,退出,并发送给父进程回收信号 + printf("子进程%d 已退出,发送回收信号\n", getpid()); + kill(getppid(), SIGUSR1); + + // 获取程序执行完毕的时间点 + auto end_time = std::chrono::high_resolution_clock::now(); + + // 计算时间差 + auto duration = std::chrono::duration_cast(end_time - start_time); + + // 输出程序执行时间(以秒为单位) + std::cout << "子进程 " << getpid() << " 程序执行时间: " << duration.count() << " 秒" << std::endl; + + exit(0); + } + + return 0; +} \ No newline at end of file diff --git a/include/UpDownFile.h b/include/UpDownFile.h new file mode 100644 index 0000000..3ae74e3 --- /dev/null +++ b/include/UpDownFile.h @@ -0,0 +1,13 @@ +#ifndef _UPDOWNFILE_H_ +#define _UPDOWNFILE_H_ + +/* + 上传下载模块 +*/ + + +extern int UpLoadFile(int iClient, char *strFileName); +extern int DownLoadFile(int iClient, char *strFileName); + + +#endif \ No newline at end of file diff --git a/include/VideoHandle.h b/include/VideoHandle.h new file mode 100644 index 0000000..00ca9e7 --- /dev/null +++ b/include/VideoHandle.h @@ -0,0 +1,11 @@ +#ifndef _VIDEOHANDLE_H_ +#define _VIDEOHANDLE_H_ + +/* + 视频处理模块 +*/ + + +extern int handle_video(char *strFileName,char *file_m3u8_path); + +#endif \ No newline at end of file diff --git a/include/myhead.h b/include/myhead.h new file mode 100644 index 0000000..1167992 --- /dev/null +++ b/include/myhead.h @@ -0,0 +1,61 @@ +#ifndef _MYHEAD_H_ +#define _MYHEAD_H_ + +// 错误码 +enum ErrorCode +{ + ERROR = -1, + OK, + +}; + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifdef __cplusplus +extern "C" +{ + #include +} +#endif + + +#include "UpDownFile.h" +#include "VideoHandle.h" + +// #define BUF_SIZE_VIDEO (1024 * 20) +#define BUF_SIZE_VIDEO (1024) +#define BUF_SIZE (500) + +//同时检测客户端数量 +#define MAX_EVENTS 4090 + + +// 统一使用末尾加/,前面不加/ +#define DATA_PATH ("data/") + +#endif diff --git a/main b/main new file mode 100644 index 0000000000000000000000000000000000000000..e7544d08abc49ce2f61de42b999ecfad11ab2238 GIT binary patch literal 707096 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 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..63be741 --- /dev/null +++ b/main.cpp @@ -0,0 +1,262 @@ +#include "./include/myhead.h" + +/** + * 设置回收信号处理函数 + * 进程间信号触发设置——异步通信 + */ +void signal_handler(int signal_num) +{ + if (signal_num == SIGUSR1) + { + printf("系统:检测到回收信号,开始回收子进程...\n"); + int status; + // 等待与当前进程组ID相同的任何子进程退出并回收资源 + // int ret = waitpid(0, &status, WNOHANG); // WNOHANG:非阻塞形式 + int ret = waitpid(0, &status, 0); // 0:阻塞形式 + if (ret > 0) + { + printf("系统:回收子进程,进程ID为 %d,退出状态为 %d,已回收.\n", ret, WEXITSTATUS(status)); + } + else if (0 == ret) + { + // 子进程状态发生改变,但未退出 + printf("系统:没有子进程退出\n"); + } + else + { + perror("系统:waitpid发送错误"); + } + } +} + +/* + 服务器入口 +*/ +int main(int argc, char const *argv[]) +{ + /* + IO多路复用并发服务器 + */ + int ret; + char buf[BUF_SIZE] = {0}; + + // 注册回收信号并绑定回调函数 + signal(SIGUSR1, signal_handler); // 用于子传父 + + // 1 socket 创建流式套接字 + int fd_Server = socket(AF_INET, SOCK_STREAM, 0); // 返回服务端文件描述符 + if (-1 == fd_Server) + { + perror("socket error!\r\n"); + return -1; + } + + // 2 bind 绑定协议端口IP + struct sockaddr_in stServer; // 网络配置结构体 + memset(&stServer, 0, sizeof(stServer)); + + stServer.sin_family = AF_INET; // 指定要使用 IPv4 地址族 + stServer.sin_port = htons(8888); // 指定端口 + // stServer.sin_addr.s_addr = inet_addr("192.168.12.111"); // 绑定ip + // stServer.sin_addr.s_addr = inet_addr("192.168.10.61"); // 绑定ip + stServer.sin_addr.s_addr = inet_addr("0.0.0.0"); // 绑定ip + + ret = bind(fd_Server, (const struct sockaddr *)&stServer, sizeof(const struct sockaddr)); + if (-1 == ret) + { + perror("bind error!\r\n"); + return -1; + } + + // 3 listen + ret = listen(fd_Server, 10); + if (-1 == ret) + { + perror("listen error!\r\n"); + return -1; + } + + printf("系统:服务器启动\n"); + + struct sockaddr_in stClient; // 用于存放客户端的容器 + socklen_t len = sizeof(struct sockaddr_in); + /** + * 使用epoll检测请求 + */ + // 创建epoll实例 + int epoll_fd = epoll_create(1); + if (epoll_fd == -1) + { + perror("epoll_create"); + exit(EXIT_FAILURE); + } + struct epoll_event event; + event.events = EPOLLIN; + event.data.fd = fd_Server; + + // 将监听套接字添加到epoll实例中 + if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd_Server, &event) == -1) + { + perror("epoll_ctl"); + exit(EXIT_FAILURE); + } + + struct epoll_event events[MAX_EVENTS]; + + int max = fd_Server; // 设置当前最大检测文件符--动态更改 + + // 开始检测 + while (1) + { + int num_events = epoll_wait(epoll_fd, events, MAX_EVENTS, -1); + if (num_events == -1) + { + perror("epoll_wait"); + continue; + } + + for (int i = 0; i < num_events; i++) + { + int fd = events[i].data.fd; + + // 服务器IO活跃,表示新客户端连接,接入连接,加入检测表,更新max + if (fd == fd_Server) + { + memset(&stClient, 0, sizeof(struct sockaddr_in)); + int fd_newCli = accept(fd_Server, (struct sockaddr *)&stClient, &len); + if (-1 == fd_newCli) + { + continue; + } + // 加入检测表 + event.events = EPOLLIN; + event.data.fd = fd_newCli; + + // 将新连接的套接字添加到epoll实例中 + if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd_newCli, &event) == -1) + { + perror("epoll_ctl"); + continue; + } + + printf("系统:新客户端连接 分配fd号:%d\n", fd_newCli); + } + else + { + /* + bug1: + 非阻塞IO,第二次接收到的是传输内容,没有命令,会当成传输命令处理 + 开始和结束标志位都由发送文件方发出,不需要等待,因为是TCP连接,没有丢包,只需要发数据和拿数据 + 原因是由于服务器接受错误退出,但客户端还在上传引发的问题 + 解决办法:直接关闭 + bug2: + 出现粘包---2个小数据包被合并成一个数据包 + 解决方法---消息前缀 + */ + memset(buf, 0, BUF_SIZE); + + // 客户端IO活跃,接入连接,检测指令,阻塞接收 + + // 消息前缀解决粘包 + int message_length = 0; + int bytes_received = recv(fd, &message_length, sizeof(int), 0); + printf("客户端%d 获取指令的消息前缀 %d\n", fd, message_length); + if (bytes_received != sizeof(int)) + { + printf("客户端%d 非法指令,断开连接\n", fd); + // 关闭文件描述符并停止检测该IO + close(fd); + epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, NULL); + + printf("客户端%d 关闭 fd=%d\n\n", fd, fd); + continue; + } + + ret = recv(fd, buf, message_length, 0); + if (ret > 0) + { + printf("客户端%d 指令:%s\n", fd, buf); + // 解析指令 + if (0 == strncmp(buf, "put", 3)) + { + // 上传:put test.txt + ret = UpLoadFile(fd, buf + 4); + if (0 == ret) + { + if ((strstr(buf, ".mp4") != NULL) || (strstr(buf, ".avi") != NULL) || (strstr(buf, ".ts") != NULL)) + { + // 处理视频,返回处理后的m3u8文件名 + printf("系统:检测到视频文件 进入API分析模块\n"); + char file_m3u8_path[100] = {0}; + ret = handle_video(buf + 4, file_m3u8_path); + } + printf("客户端%d 上传成功\n", fd); + // 关闭文件描述符并停止检测该IO + close(fd); + epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, NULL); + printf("客户端%d 关闭 fd=%d\n\n", fd, fd); + continue; + } + else + { + printf("客户端%d 上传失败\n", fd); + + // 关闭文件描述符并停止检测该IO + close(fd); + epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, NULL); + printf("客户端%d 关闭 fd=%d\n\n", fd, fd); + continue; + } + } + else if (0 == strncmp(buf, "get", 3)) + { + // 下载:get test.txt + ret = DownLoadFile(fd, buf + 4); + if (ret < 0) + { + printf("客户端%d 下载失败\n", fd); + + // 关闭文件描述符并停止检测该IO + close(fd); + epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, NULL); + + printf("客户端%d 关闭 fd=%d\n\n", fd, fd); + continue; + } + else + { + printf("客户端%d 下载成功\n", fd); + // 关闭文件描述符并停止检测该IO + close(fd); + epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, NULL); + + printf("客户端%d 关闭 fd=%d\n\n", fd, fd); + continue; + } + } + else + { + printf("客户端%d 非法指令,断开连接\n", fd); + // 关闭文件描述符并停止检测该IO + close(fd); + epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, NULL); + + printf("客户端%d 关闭 fd=%d\n\n", fd, fd); + continue; + } + } + else + { + // 关闭文件描述符并停止检测该IO + close(fd); + epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd, NULL); + + printf("系统:关闭 fd=%d\n\n", fd); + continue; + } + } + } + } + + return 0; +} \ No newline at end of file diff --git "a/\350\257\264\346\230\216\346\226\207\346\241\243.txt" "b/\350\257\264\346\230\216\346\226\207\346\241\243.txt" new file mode 100644 index 0000000..a189a54 --- /dev/null +++ "b/\350\257\264\346\230\216\346\226\207\346\241\243.txt" @@ -0,0 +1,25 @@ +1.0 实现功能: + 1.指令上传:put test.txt + 2.指令下载: get test.txt + 3.IO多路复用 + +2.0 实现功能: + 1.处理视频 + 2.单次视频分块ts流 + 3.发送API请求 + 4.响应API请求 + 5.opencv处理ts视频 + + +4.0 实现功能: + 1. 指令上传下载 + 2. IO多路复用(select),高性能并发 + 3. 使用消息前缀(int),防止粘包 + 4. 创建子进程处理视频 + 5. 子进程处理完任务发信号通知父进程回收资源,防止僵尸进程 + 6. 将上传的视频处理成hls流媒体文件 + 7. 循环发送API请求,携带ts文件 + 8. json+opencv库处理API返回结果,生成新的hls流媒体文件 + +4.1 实现功能: + 1.更改为用epoll实现IO多路复用 \ No newline at end of file