ffmpeg放大缩小图像

news/2024/7/10 21:49:46 标签: ffmpeg, yuv

一 首先熟悉一下ffmpeg的两个结构体

AVPacket和AVFrame

AVPacket 主要域:*data size

AVFrame主要域:*data[POINTER_NUM]; linesize[POINTER_NUM];


压缩过的数据存放在AVPacket结构体中,解压后的数据YUV存放在AVFrame结构体中

ffmpeg中缩放图像的函数是sws_scale函数

示例代码如下:

int resample_picture(const int &width,
                            const int &height,
                            const int &width,
                            const int &height,
                            AVFrame *src_frame,
                            AVFrame **dst_frame)
{  
    AVFrame *tmp = av_frame_alloc();
    if(tmp == NULL)
    {
        return -2;
    }
    
    tmp->width = width;
    tmp->height = height;
    tmp->format = AV_PIX_FMT_YUV420P;


    int pic_size = avpicture_get_size((AVPixelFormat)tmp->format,width,height);
    uint8_t *m_yuvBuffer = new uint8_t[pic_size];


    avpicture_fill((AVPicture*) (tmp),
            m_yuvBuffer,
            (AVPixelFormat)tmp->format,
            tmp->width,
            tmp->height);


    SwsContext *scaleCtx = sws_getContext(
                width,height, f_SrcCodecCtx_->pix_fmt,
                width, height, (AVPixelFormat)tmp->format,
                SWS_BICUBIC, NULL, NULL, NULL);


    if (scaleCtx == NULL)
    {
        return -3;
    }


    if(sws_scale(scaleCtx,
            src_frame->data, src_frame->linesize,
            0,
            height,
            tmp->data, tmp->linesize) <= 0)
    {
        return -4;
    }


    sws_freeContext(scaleCtx);        
    *dst_frame = tmp;
    return 0;
}







http://www.niftyadmin.cn/n/793514.html

相关文章

秒懂卷积

最近看到很多地方都有提到卷积(比如卷积神经网络&#xff0c;视频噪声抑制)&#xff0c;但是一直不理解具体是啥&#xff0c;物理意义又是啥。 一 卷积的基本概念 其实就是两个可积函数在x上的乘积的积分。公式记作 卷积和傅立叶变换有着密切的关系&#xff0c;两个函数的傅立…

ffmpeg源码优化之推流发送篇

1.引言 大家好&#xff0c;距离上篇文章已经过去有一段时间了&#xff0c;主要是最近太忙了&#xff0c;一直没有更新。今天总算能抽出一点时间&#xff0c;说说ffmpeg源码级别的优化了&#xff0c;这块应该会连载&#xff0c;请大家持续关注。废话不多说&#xff0c;接下来就…

RK3399音视频开发之花屏、抖动分析(硬核文章)

1.引言 最近在RK339开发做项目时&#xff0c;碰到一个非常棘手的问题&#xff0c;挂机测试或终端后重启后具有小概率的花屏&#xff0c;抖动&#xff0c;而且这个现象是不可逆&#xff0c;只有重启推流服务或者重启整个终端&#xff0c;才会恢复。这个问题会导致视频采集&…

最快系统搭建:Vmware、ubuntu18.0及常用软件安装

首先去对应的官网下载vmware(官网下载&#xff0c;需要找密钥)和ubuntu18.0(桌面版本或者server版本) ubuntu官网&#xff1a;https://www.ubuntu.com/download/server Vm官网:https://www.vmware.com/cn/products/workstation-pro.html 打开虚拟机&#xff0c;并创建新的虚…

JM8.5中的高精度象素运动估计

JM8.5中的高精度象素运动估计Outline:1、 运动估计相关的数据结构和变量2、 相关重要变量的初始化3、 运动估计函数(BlockMotionSearch())的流程4、 运动矢量预测5、 整象素点运动估计6、 亚象素点运动估计&#xff08;即高精度象素点运动估计&#xff09;7、 亚象素点的…

x264码率控制

一 码率控制性 实际上h264标准并没有码率控制这一块内容&#xff0c;也就是说这个是x264自己实现的&#xff0c;和h264无关。当然我们自己也可以实现一种码率控制算法来控制编码码率。 二 x264码率控制 x264码率控制主要分为三种 ABR average bitrate平均码率&#xff0c;编…

详解设计模式系列

1.观察者模式 观察者模式作用: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式结构图: Observer模式定义的是一对多的关系&#xff0c;这里一就是图中的Subject 类&#xff0c;而多则是Obesrver 类&a…

高斯函数

高斯分布&#xff0c;也称正态分布&#xff0c;又称常态分布&#xff0c;记为N&#xff08;μ&#xff0c;σ^2&#xff09;&#xff0c;其中μ&#xff0c;σ^2为分布的参数&#xff0c;分别为高斯分布的期望和方差。当有确定值时&#xff0c; p(x)也就确定了&#xff0c;特别…