今天,想在代码中用下ffmpeg中的movie+overlay滤镜弄下图片水印,Filter描述字符串为“movie=xxx.png[over];[in][over]overlay[out]”,按照正常的创建输入buffersrc,输出buffersink,创建filter graph,然后从YUV文件中读取一帧放入所创建好的filter graph中,读取帧的过程如下:
AVFrame* frame = av_frame_alloc();
frame->width = width;
frame->height = height;
frame->format = AV_PIX_FMT_YUV420P;
// frame->pts = 0; // 必要设置
int size = avpicture_get_size(AV_PIX_FMT_YUV420P, frame->width, frame->height);
uint8_t* buffer = (uint8_t*)av_malloc(size);
avpicture_fill((AVPicture*)frame, buffer, AV_PIX_FMT_YUV420P, frame->width