video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2021-05-25 19b3ad6e4e9c8e195e9255d5448ab5952b1ed54e
bug fixed gb28181 capture
1个文件已修改
45 ■■■■■ 已修改文件
csrc/thirdparty/gb28181/include/PsToEs.hpp 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
csrc/thirdparty/gb28181/include/PsToEs.hpp
@@ -200,33 +200,42 @@
                printf(" buffinfo == nullptr \n");
                return 0;
            }
////////////////////////////////////////////////////////
            FILE* fpJpg = NULL;
              char fileJpgName[32] = "./tmpCaptureJpg.jpg";
            char fileIFrameName[32] = "./tmpCaptureX264IFrame";
            auto fpIframe = fopen(fileIFrameName, "wb+");
            fwrite(buffinfo->buff, buffinfo->buffLen, 1, fpIframe);
            fflush(fpIframe);
            fclose(fpIframe);
            char cmd[512] = {0};
            char cmd[128] = {0};
            memset(cmd, 0, 128);
            char fileJpgName[32] = "./tmpCaptureJpg.jpg";
            sprintf(cmd, "ffmpeg -i %s -y -f image2 -ss 00:00:00 -vframes 1 %s >/dev/null", fileIFrameName,
                    fileJpgName);
            system(cmd);
            for(int i = 0; i < 10 * 25; i++){
                if (!buffinfo){
                    buffinfo = _this->m_rtpQueue.pop();
                }
                auto fpIframe = fopen(fileIFrameName, "wb+");
                fwrite(buffinfo->buff, buffinfo->buffLen, 1, fpIframe);
                fflush(fpIframe);
                fclose(fpIframe);
            auto fpJpg = fopen(fileJpgName, "rb");
            if (fpJpg == NULL) {
                printf("fopen(fileJpgName, \"rb\")\n");
                return 0;
                memset(cmd, 0, 512);
                sprintf(cmd, "ffmpeg -i %s -y -f image2 -ss 00:00:00 -vframes 1 %s >/dev/null", fileIFrameName,
                        fileJpgName);
                int rr = system(cmd);
                delete[] buffinfo->buff;
                delete buffinfo;
                buffinfo = nullptr;
                fpJpg = fopen(fileJpgName, "rb");
                if (fpJpg) {
                    break;
                }
            }
///////////////////////////////////////////////////////////
            fseek(fpJpg, 0, SEEK_END);
            len = ftell(fpJpg);
            fseek(fpJpg, 0, SEEK_SET);
            *bufsize = fread(buf, sizeof(char), len, fpJpg);
            fclose(fpJpg);
            delete[] buffinfo->buff;
            delete buffinfo;
            memset(cmd, 0, 128);
            sprintf(cmd, "rm %s %s >/dev/null", fileIFrameName, fileJpgName);