c++ - 在 C++ 中使用 FFmpeg 覆盖视频帧
问题描述
我正在尝试在 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.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;
如何在我的代码中实现此功能?
解决方案
很久以前,我写了一个程序,使用 ffmpeg 来解码视频并将它们显示为 OpenGL 纹理。您可以从 我的主页下载代码 请注意,此代码已有十多年的历史且尚未维护,因此我不能说它仍然有效。但是似乎没有人为您提供更好的答案,所以我希望这至少可以帮助您入门。
推荐阅读
- python - Pandas:压缩两个封闭的时间戳行
- scrapy - 在 Scrapy 上更改图像管道的 CSV 结果
- xcode9 - 找不到框架 KissXML
- oracle - ORACLE PL/SQL 在查询来自 3 列的信息时出现存储过程错误
- go - 将 Golang goroutine 或通道固定到请求/响应
- ruby-on-rails - Rails 西装外套宝石。地图没有显示
- javascript - 如何从大文件中每隔几行插入文本
- mysql - 尝试使用 docker 将 Golang 连接到 mssql 服务器时连接被拒绝
- jquery - Chrome 中 jQuery 滑块中的 1px 故障
- c# - Holotoolkit 中的 HandDraggable 和 GestureAction 脚本有什么区别?