Наложение видеокадров с использованием FFmpeg в С++

Я пытаюсь наложить два видео, используя 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.org/doxygen/2.1/doc_2examples_2filtering_video_8c-example.html

и https://code5.cn/so/c%2B%2B/2601062

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

как я могу реализовать эту функцию в своем коде?


person Bruce    schedule 11.05.2020    source источник


Ответы (1)


Давным-давно я написал программу, которая использовала ffmpeg для декодирования видео и отображения их в виде текстур OpenGL. Вы можете загрузить код с моей домашней страницы Обратите внимание, что этому коду более десяти лет, и он не поддерживался, поэтому я не могу сказать, что он все еще работает. Но, кажется, ни у кого нет лучшего ответа для вас, поэтому я надеюсь, что это поможет вам хотя бы начать.

person Hugh Fisher    schedule 14.05.2020