Ubuntu FFmpeg Mjpeg to H264

读取摄像头的图像,转为原始二进制码流vector<uchar>,加上序列帧的下标ID,利用FFmpeg库中的AV_CODEC_ID_H264编码器进行压缩,转为h264视频流。以下为C++代码中的转换函数,需要在ubuntu中预装FFmpeg库才可以使用。#include "MjpegtoH264.h"FILE* outPath;AVCodec* dec;AVCod...
摘要由CSDN通过智能技术生成

读取摄像头的图像,转为原始二进制码流vector<uchar>,加上序列帧的下标ID,利用FFmpeg库中的AV_CODEC_ID_H264编码器进行压缩,转为h264视频流。

以下为C++代码中的转换函数,需要在ubuntu中预装FFmpeg库才可以使用。

#include "MjpegtoH264.h"

FILE* outPath;

AVCodec* dec;
AVCodecContext* dec_ctx;
AVCodec* enc;
AVCodecContext* enc_ctx;
SwsContext* sws_cxt;
AVFrame* src_frame;
AVPacket src_packet;
AVFrame* dst_frame;
int dst_size;
AVPacket dst_packet;

bool InitMjpegToH264(const std::string file_name) {
    outPath = fopen(file_name.c_str(), "wb");

    av_register_all();

    dec = avcodec_find_decoder(AV_CODEC_ID_MJPEG);
    dec_ctx = avcodec_alloc_context3(dec);
    dec_ctx->width = WIDTH;
    dec_ctx->height = HEIGHT;
    dec_ctx->pix_fmt = AV_PIX_FMT_YUV420P;
    if (dec->capabilities & CODEC_CAP_TRUNCATED) dec_ctx->flags|= CODEC_FLAG_TRUNCATED;

    if (avcodec_open2(dec_ctx, dec,NULL) < 0) {
  
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值