











一、概述
ffmpeg提供了一个很有用的工具进行像素格式的转换。在实际的应用场景中可以根据需求来定制转换过程。
本例通过BGRA转YUV420P来展现这个过程
注意事项:
二、代码示例
extern "C" { #include "libswscale/swscale.h" #include "libavutil/avutil.h" }
swsCtx = sws_getCachedContext(swsCtx, mContext->width, mContext->height, AV_PIX_FMT_BGRA,//输入的宽高及像素格式 mContext->width, mContext->height,//输出的宽高 AV_PIX_FMT_YUV420P,//输出的像素格式 SWS_BILINEAR,//双线性插值算法 0, 0, 0 ); if (!swsCtx) { qDebug() << "sws_getCachedContext failed!"; }
const uint8_t* srcData[AV_NUM_DATA_POINTERS]; srcData[0] = inData; int srcLines[AV_NUM_DATA_POINTERS]; srcLines[0] = mContext->width * 4; int ret = sws_scale(swsCtx , srcData, srcLines, 0, mContext->height, frame->data, frame->linesize ); if (ret <= 0) { PrintErr(ret); }
if (swsCtx) { sws_freeContext(swsCtx); swsCtx = nullptr; }
encoder->scale((uint8_t*)data, frame);
auto pkt = encoder->Encode(frame);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。