From a63dd3d2ef101ea6f8b582ddfbbbbce53404c5c9 Mon Sep 17 00:00:00 2001 From: fiss <2657262686@qq.com> Date: Wed, 16 Aug 2023 16:26:30 +0800 Subject: [PATCH] 修复recode初始化崩溃问题 --- src/decoder/dvpp/FFRecoder.cpp | 13 ++++++++++++- src/decoder/dvpp/FFRecoderTaskManager.cpp | 2 +- src/demo/demo.cpp | 10 +++++----- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/decoder/dvpp/FFRecoder.cpp b/src/decoder/dvpp/FFRecoder.cpp index f3c8d78..8a4c1ce 100644 --- a/src/decoder/dvpp/FFRecoder.cpp +++ b/src/decoder/dvpp/FFRecoder.cpp @@ -122,7 +122,18 @@ bool FFRecoder::init(int w, int h, AVRational time_base, AVCodecContext* avctx, bool FFRecoder::init(AVStream* stream, AVCodecContext* avctx, const char* outfile_name) { - codec_ctx_ = (AVCodecContext*)av_malloc(sizeof(AVCodecContext)); + const AVCodec* encoder = avcodec_find_encoder(avctx->codec_id); + if (!encoder) { + LOG_ERROR("Find encoder AV_CODEC_ID_H264 failed!"); + return false; + } + // 获取解码器上下文 + codec_ctx_ = avcodec_alloc_context3(encoder); + if (!codec_ctx_) { + LOG_ERROR("Alloc context for encoder contx failed!"); + return false; + } + avcodec_copy_context(codec_ctx_, avctx); codec_ctx_->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; m_inStream = stream; diff --git a/src/decoder/dvpp/FFRecoderTaskManager.cpp b/src/decoder/dvpp/FFRecoderTaskManager.cpp index 61b3cd1..ecdb11a 100644 --- a/src/decoder/dvpp/FFRecoderTaskManager.cpp +++ b/src/decoder/dvpp/FFRecoderTaskManager.cpp @@ -400,7 +400,7 @@ void FFRecoderTaskManager::recode_thread2() { // 发送mq消息 if(mq_publish_func && recoderinfo.mq_info.length() > 0) { mq_publish_func(recoderinfo.mq_info.c_str()); - LOG_INFO("record save: {}", recoderinfo.mq_info.c_str()); + // LOG_INFO("record save: {}", recoderinfo.mq_info.c_str()); } LOG_INFO("record end, total save: {} start_frame_nb: {} end_frame_nb: {} file_path: {}", count, start_frame_nb, end_frame_nb, file_name); diff --git a/src/demo/demo.cpp b/src/demo/demo.cpp index f7f2292..b1aa00e 100755 --- a/src/demo/demo.cpp +++ b/src/demo/demo.cpp @@ -642,10 +642,10 @@ string createTask(void *handle, std::vector algor_vec, int gi) tparam.ipc_url = "rtsp://admin:ad123456@192.168.60.165:554/cam/realmonitor?channel=1&subtype=0"; break; case 1: - tparam.ipc_url = "/opt/cmhu/data/bayue.mp4"; + tparam.ipc_url = "/opt/share/data/bayue.mp4"; break; case 2: - tparam.ipc_url = "/opt/cmhu/data/Street.uvf"; + tparam.ipc_url = "/opt/share/data/Street.uvf"; break; case 3: tparam.ipc_url = "rtsp://122.97.218.170:8604/openUrl/V5nXRHa?params=eyJwcm90b2NhbCI6InJ0c3AiLCJjbGllbnRUeXBlIjoib3Blbl9hcGkiLCJleHByaWVUaW1lIjotMSwicHJvdG9jb2wiOiJydHNwIiwiZXhwaXJlVGltZSI6MzAwLCJlbmFibGVNR0MiOnRydWUsImV4cGFuZCI6InN0YW5kYXJkPXJ0c3Amc3RyZWFtZm9ybT1ydHAiLCJhIjoiMTBjZjM4N2JjY2Y5NDg3YzhjNWYzNjE2M2ViMWUyNTJ8MXwwfDEiLCJ0IjoxfQ=="; @@ -654,13 +654,13 @@ string createTask(void *handle, std::vector algor_vec, int gi) tparam.ipc_url = "rtsp://admin:ad123456@192.168.60.165:554/cam/realmonitor?channel=1&subtype=0"; break; case 5: - tparam.ipc_url = "/opt/shzhao/vpt_ascend/data/公安局老桥头_CVR15F89410_1465819864_1B.mp4"; + tparam.ipc_url = "/opt/share/data/公安局老桥头_CVR15F89410_1465819864_1B.mp4"; break; case 6: - tparam.ipc_url = "/opt/shzhao/vpt_ascend/data/不带头盔2.mp4"; + tparam.ipc_url = "/opt/share/data/不带头盔2.mp4"; break; default: - tparam.ipc_url = "/opt/cmhu/data/Street.uvf"; + tparam.ipc_url = "/opt/share/data/Street.uvf"; break; } -- libgit2 0.21.4