gpt4 book ai didi

ffmpeg - 如何使用 ffmpeg 的 sws_scale() 调整图片大小?

转载 作者:行者123 更新时间:2023-12-03 13:21:38 24 4
gpt4 key购买 nike

我想通过使用 ffmpeg 的 func--->sws_scale() 来调整图片的大小。

有没有人知道怎么做?

你有这个函数的源代码吗?

最佳答案

首先你需要创建一个SwsContext (您只需要这样做一次):

struct SwsContext *resize;
resize = sws_getContext(width1, height1, AV_PIX_FMT_YUV420P, width2, height2, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL);

您需要两帧进行转换, frame1 是原始帧,您需要显式分配 frame2 :
AVFrame* frame1 = avcodec_alloc_frame(); // this is your original frame

AVFrame* frame2 = avcodec_alloc_frame();
int num_bytes = avpicture_get_size(AV_PIX_FMT_RGB24, width2, height2);
uint8_t* frame2_buffer = (uint8_t *)av_malloc(num_bytes*sizeof(uint8_t));
avpicture_fill((AVPicture*)frame2, frame2_buffer, AV_PIX_FMT_RGB24, width2, height2);

如果您需要调整收到的每一帧的大小,您可以在循环中使用此部分:
// frame1 should be filled by now (eg using avcodec_decode_video)
sws_scale(resize, frame1->data, frame1->linesize, 0, height1, frame2->data, frame2->linesize);

请注意,我还更改了像素格式,但您可以对两个帧使用相同的像素格式

关于ffmpeg - 如何使用 ffmpeg 的 sws_scale() 调整图片大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12831761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com