video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2021-05-25 19b3ad6e4e9c8e195e9255d5448ab5952b1ed54e
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);