x264_encoder_encode( h, &nal, &i_nal, pic, &pic_out )返回值

博客提及要修改代码的返回值,且每次打印结果均为 0,围绕代码返回值修改及打印结果情况展开。

x264_encoder_encode( h, nal, i_nal, pic, pic_out )返回值 - 加菲 -  .

 

 

改一下,输出它的返回值:

x264_encoder_encode( h, nal, i_nal, pic, pic_out )返回值 - 加菲 -  .

 

每次打印结果均为 0

x264_encoder_encode( h, nal, i_nal, pic, pic_out )返回值 - 加菲 -  .
//初始化编码器 x264_t* init_x264_encoder(int width, int height, int fps) { x264_param_t param; x264_param_default_preset(&param, "ultrafast", "zerolatency"); param.i_width = width; param.i_height = height; param.i_fps_num = fps; param.i_fps_den = 1; param.i_csp = X264_CSP_NV12; param.i_threads = 1; param.rc.i_rc_method = X264_RC_CQP; param.rc.i_qp_constant = 25; param.i_log_level = 0; x264_param_apply_profile(&param, "high"); x264_t* encoder = x264_encoder_open(&param); if (!encoder) { std::cerr << "x264编码器初始化失败!" << std::endl; return nullptr; } return encoder; } //编码 int encode_frame_nv12(x264_t* encoder, const uint8_t* nv12Data, int width, int height, std::string& h264OutString) { if (!encoder || !nv12Data) return -1; // 3️⃣ 分配输入帧结构 x264_picture_t pic_in, pic_out; x264_picture_alloc(&pic_in, X264_CSP_NV12, width, height); // 4️⃣ 拆分 NV12 数据(连续内存:Y + UV) int y_size = width * height; int uv_size = y_size / 2; memcpy(pic_in.img.plane[0], nv12Data, y_size); memcpy(pic_in.img.plane[1], nv12Data + y_size, uv_size); // 5️⃣ 编码 x264_nal_t *nals = nullptr; int i_nals = 0; int frame_size = x264_encoder_encode(encoder, &nals, &i_nals, &pic_in, &pic_out); if (frame_size < 0) { std::cerr << "x264编码失败" << std::endl; x264_picture_clean(&pic_in); x264_encoder_close(encoder); return -3; } // 6️⃣ 输出拼接 h264OutString.clear(); for (int i = 0; i < i_nals; i++) { h264OutString.append(reinterpret_cast<char *>(nals[i].p_payload), nals[i].i_payload); } return 0; } //销毁编码器 void destroy_x264_encoder(x264_t* encoder) { if (encoder) x264_encoder_close(encoder); } 这是编码器相关代码,结合给出的相机采集代码,说明为什么每30帧才有帧头,若我想修改,应该如何修改
最新发布
11-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值