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