gpt4 book ai didi

video - 向解码的视频数据添加 Logo 的问题

转载 作者:行者123 更新时间:2023-12-04 23:01:13 27 4
gpt4 key购买 nike

这是为解码的 YUV 图片添加 Logo 的代码片段
(由ffmpeg)。 http://pastebin.com/md6c16c5

它几乎可以工作。只有一个问题:有时标志板与周围部分严重混淆。最奇怪的是,有时它可以正常工作,但有时却不行。

该代码将修改 ffmpeg 分配的 AVFrame。这会导致问题吗?

    void    OsdLogo(AVFrame* picture, unsigned char *pBufLogo, int xPos, int yPos)
{
unsigned char * pYBuf = picture->data[0];
unsigned char * pUBuf = picture->data[1];
unsigned char * pVBuf = picture->data[2];
unsigned char * pBufLogoY = pBufLogo;
unsigned char * pBufLogoU = pBufLogo+180*52;
unsigned char * pBufLogoV = pBufLogoU+180*52/4;
int i,j;
if ((xPos&0x01)!=0)
{
xPos&=(~0x01);
}
if ((yPos&0x01)!=0)
{
yPos&=(~0x01);
}
pYBuf+=(yPos*picture->linesize[0]+xPos);
pUBuf+=(yPos*picture->linesize[0]/4+xPos/2);
pVBuf+=(yPos*picture->linesize[0]/4+xPos/2);
for (i=0; i < 52 ; i+=2)
{
for(j=0; j < 180 ; j+=2)
{
if ((*pBufLogo)<205)
{
//Y
*(pYBuf+picture->linesize[0]) = *(pBufLogo);
*pYBuf++ = *pBufLogo;
*(pYBuf+picture->linesize[0]) = *(pBufLogo);
*pYBuf++ = *pBufLogo;
//U
(*pUBuf++) =(*pBufLogoU++);
//V
(*pVBuf++) =(*pBufLogoV++);
}
else
{
pYBuf+=2;
pUBuf++;
pVBuf++;
pBufLogoU++;
pBufLogoV++;
}
pBufLogo+=2;
}
pYBuf+=(picture->linesize[0]-180+picture->linesize[0]);
pUBuf+=((picture->linesize[0]-180)/2);
pVBuf+=((picture->linesize[0]-180)/2);
pBufLogo+=180;
}
}

最佳答案

这是ffmpeg的vhook接口(interface)的alpha混合水印的实现,听起来与您正在做的相似,因此可能会有所帮助。

http://refractalize.blogspot.com/2009/09/alpha-blended-watermarks-with-ffmpeg.html

关于video - 向解码的视频数据添加 Logo 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1644962/

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