在c++中使用FFmpeg覆盖视频帧。

问题描述 投票:0回答:1

我试图用C++中的FFmpeg来叠加两个视频。所以我按照FFmpeg的页面,在终端中按照这个命令进行操作。

$ ffmpeg -i Right.mov -i Left.mov -filter_complex "[0:v][1:v] overlay=0:0"  -c:a copy output.mov

我可以通过终端实现这个功能,但我想通过编码实现这个功能。

typedef struct {
    AVFormatContext *fmt_ctx;
    int stream_idx;
    AVRational time_base;
    AVStream *video_stream;
    AVCodecContext *codec_ctx;
    AVCodecContext *pCodecCtxOrig;
    AVCodec *decoder;
    AVPacket *packet;
    AVFrame *av_frame;
    AVFrame *gl_frame;
    AVFrame *out_frame;
    AVStream *pStream;
    struct SwsContext *conv_ctx;

另外,我还展示了一些示例代码,但我不太确定

https:/ffmpeg.orgdoxygen2.1doc_2examples_2filtering_video_8c-example.html。

https:/code5.cnsoc%2B%2B2601062

AVFilterContext *buffersink_ctx;
AVFilterContext *buffersrc_ctx;
AVFilterGraph *filter_graph;

我如何在我的代码中实现这个功能?

c++ opengl ffmpeg video-processing
1个回答
1
投票

很久以前,我写了一个使用ffmpeg解码视频并以OpenGL纹理显示的程序。你可以从以下网站下载代码我的主页请注意,这段代码已经有十多年的历史了,而且一直没有维护,所以我不能说它还能用。但似乎没有人给你更好的答案,所以我希望这至少能帮助你入门。

© www.soinside.com 2019 - 2024. All rights reserved.