gpt4 book ai didi

c - 如何使用 FFmpeg 将图像的某些部分合并为一个?

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:58 25 4
gpt4 key购买 nike

可以将图像的某些部分合并到 FFMPEG C 库中的一个组合输出图像。

像 Java Graphics Graphics.drawImage (Image, x, y, null);

最佳答案

是也不是。FFMEG 有一个检索“帧”的接口(interface)。然后,您可以将这些帧作为内存中的像素缓冲区进行访问,并根据需要进行处理,包括将一帧与前一帧相结合,或者从两个视频源中获取帧并构建一个组合图像,其中一个源是另一个源中的一个窗口.但 FFMEG 不会为你做那件事。

这是您读取框架的示例代码。 https://ffmpeg.org/doxygen/3.1/demuxing_decoding_8c-example.html

if (pkt.stream_index == video_stream_idx) {
/* decode video frame */
ret = avcodec_decode_video2(video_dec_ctx, frame, got_frame, &pkt);
if (ret < 0) {
fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret));
return ret;
}
if (*got_frame) {
if (frame->width != width || frame->height != height ||
frame->format != pix_fmt) {
/* To handle this change, one could call av_image_alloc again and
* decode the following frames into another rawvideo file. */
fprintf(stderr, "Error: Width, height and pixel format have to be "
"constant in a rawvideo file, but the width, height or "
"pixel format of the input video changed:\n"
"old: width = %d, height = %d, format = %s\n"
"new: width = %d, height = %d, format = %s\n",
width, height, av_get_pix_fmt_name(pix_fmt),
frame->width, frame->height,
av_get_pix_fmt_name(frame->format));
return -1;
}
printf("video_frame%s n:%d coded_n:%d pts:%s\n",
cached ? "(cached)" : "",
video_frame_count++, frame->coded_picture_number,
av_ts2timestr(frame->pts, &video_dec_ctx->time_base));
/* copy decoded frame to destination buffer:
* this is required since rawvideo expects non aligned data */
av_image_copy(video_dst_data, video_dst_linesize,
(const uint8_t **)(frame->data), frame->linesize,
pix_fmt, width, height);
/* write to rawvideo file */
fwrite(video_dst_data[0], 1, video_dst_bufsize, video_dst_file);
}
}

用您对缓冲区的操作替换 fwrite 调用。尝试交换红色和绿色作为第一个测试,以查看您是否可以以任何您想要的方式操作该缓冲区并获得信心。

关于c - 如何使用 FFmpeg 将图像的某些部分合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com